From b271a988676afbf3b479ec3dd6e37e9ba2b921d7 Mon Sep 17 00:00:00 2001 From: Tushar Dahiya Date: Fri, 7 Oct 2022 09:30:58 +0530 Subject: [PATCH 01/94] Update add-route.md --- docs/tutorials/add-route.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/tutorials/add-route.md b/docs/tutorials/add-route.md index 6b1bf7e7cf..9278c2e806 100644 --- a/docs/tutorials/add-route.md +++ b/docs/tutorials/add-route.md @@ -34,10 +34,10 @@ App::init() ### 4. The Labels Mechanism -Labels are very strait forward and easy to use and understand, but in the same time are very robust. +Labels are very straightforward and easy to use and understand, but at the same time are very robust. Labels are passed from the controllers route and used to pick up key-value pairs to be handled in a centralized place along the road. -Labels can be used to pass a pattern in order to be replaced in the other end. +Labels can be used to pass a pattern in order to be replaced on the other end. Appwrite uses different labels to achieve different things, for example: #### Scope @@ -64,7 +64,7 @@ App::post('/v1/account/create') #### SDK * sdk.auth - Array of authentication types is passed in order to impose different authentication methods in different situations. * sdk.namespace - Refers to the route namespace. -* sdk.method - Refers to the sdk method that needs to called. +* sdk.method - Refers to the sdk method that needs to be called. * sdk.description - Description of the route,using markdown format. * sdk.sdk.response.code - Refers to the route http response status code expected. * sdk.auth.response.model - Refers the route http response expected. @@ -106,7 +106,7 @@ App::post('/v1/storage/buckets/:bucketId/files') ``` #### Events -* event - A pattern that is associated with the route in behalf of realtime messaging. +* event - A pattern that is associated with the route in behalf of real time messaging. Placeholders marked as `[]` are parsed and replaced with their real values. ```php @@ -157,7 +157,7 @@ some code... ``` ### 6. Action -Action populates the actual routes code and has to be very clear and understandable. A good route stay simple and doesn't contain complex logic. An action is where we describe our business need in code, and combine different libraries to work together and tell our story. +Action populates the actual route code and has to be very clear and understandable. A good route stays simple and doesn't contain complex logic. An action is where we describe our business needs in code, and combine different libraries to work together and tell our story. ```php App::post('/v1/account/sessions/anonymous') From f7db9f8ab20f34d4fc1f2f4907b3cf74617b795a Mon Sep 17 00:00:00 2001 From: Tushar Dahiya Date: Fri, 7 Oct 2022 09:38:46 +0530 Subject: [PATCH 02/94] Update add-runtime.md --- docs/tutorials/add-runtime.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/tutorials/add-runtime.md b/docs/tutorials/add-runtime.md index ea8eb4dd82..4ec416fdbb 100644 --- a/docs/tutorials/add-runtime.md +++ b/docs/tutorials/add-runtime.md @@ -63,7 +63,7 @@ Internally the runtime can be anything you like as long as it follows the standa The best way to go about writing a runtime is like so: Initialize a web server that runs on port 3000 and uses any IP Address (0.0.0.0) and on each `POST` request do the following: -1. Check that the `x-internal-challenge` header matches the `INTERNAL_RUNTIME_KEY` environment variable. If not return an error with a `401` status code and an `unauthorized` error message. +1. Check that the `x-internal-challenge` header matches the `INTERNAL_RUNTIME_KEY` environment variable. If not, return an error with a `401` status code and an `unauthorized` error message. 2. Decode the executor's JSON POST request. This normally looks like so: ```json { @@ -90,13 +90,13 @@ The `Response` class must have two functions. For interpreted languages use the `path` and `file` parameters to find the file and require it. Please make sure to add appropriate checks to make sure the imported file is a function that you can execute. -5. Finally execute the function and handle whatever response the user's code returns. Try to wrap the function into a `try catch` statement to handle any errors the user's function encounters and return them cleanly to the executor with the error schema. +5. Finally execute the function and handle whatever response the user's code returns. Try to wrap the function into a `try catch ` statement to handle any errors the user's function encounters and return them cleanly to the executor with the error schema. ### 2.4 The Error Schema All errors that occur during the execution of a user's function **MUST** be returned using this JSON Object otherwise Appwrite will be unable to parse them for the user. ```json { - "code": 500, // (Int) Use 404 if function not found or use 401 if the x-internal-challenge check failed. + "code": 500, // (Int) Use 404 if function not found or use 401 if the x-internal-challenge check fails. "message": "Error: Tried to divide by 0 \n /usr/code/index.js:80:7", // (String) Try to return a stacktrace and detailed error message if possible. This is shown to the user. } ``` @@ -132,7 +132,7 @@ WORKDIR /usr/local/src COPY . /usr/local/src ``` -Next, you want to make sure you are adding execute permissions to any scripts you may run, the main ones are `build.sh` and `launch.sh`. You can run commands in Dockerfile's using the `RUN` prefix like so: +Next, you want to make sure you are adding execute permissions to any scripts you may run, the main ones are `build.sh` and `launch.sh`. You can run commands in Dockerfile using the `RUN` prefix like so: ``` RUN chmod +x ./build.sh RUN chmod +x ./launch.sh @@ -184,7 +184,7 @@ $this->runtimes['dart'] = $dart; ``` This is an example of what you would do for a compiled language such as dart. -The first line is creating a new language entry, The first parameter is the internal name and the second one is the external one which is what the user will see in Appwrite. +The first line is creating a new language entry. The first parameter is the internal name and the second one is the external one which is what the user will see in Appwrite. The second line adds a new version to the language entry, I'll break down the parameters: ``` @@ -237,7 +237,7 @@ Once you have found this, Add your own entry into this array like so: 'entrypoint' => 'Test file', // Replace with the name of the test file you wrote in ./tests/resources/LANGUAGE_NAME 'timeout' => 15, 'runtime' => 'LANGUAGE_NAME-VERSION', - 'tarname' => 'LANGUAGE_NAME-VERSION.tar.gz', // Note: If your version has a point in it replace it with a dash instead for this value. + 'tarname' => 'LANGUAGE_NAME-VERSION.tar.gz', // Note: If your version has a point in it replace it, with a dash instead for this value. ], ``` Make sure to replace all instances of `LANGUAGE_NAME` with your language's name and `VERSION` with your runtime's version. From c1f567a9ef00f704210082eb908642a8c040234b Mon Sep 17 00:00:00 2001 From: Tushar Dahiya Date: Fri, 7 Oct 2022 09:42:45 +0530 Subject: [PATCH 03/94] Update add-storage-adapter.md --- docs/tutorials/add-storage-adapter.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/tutorials/add-storage-adapter.md b/docs/tutorials/add-storage-adapter.md index 26a7167ddd..f3d516d83b 100644 --- a/docs/tutorials/add-storage-adapter.md +++ b/docs/tutorials/add-storage-adapter.md @@ -8,20 +8,20 @@ This document is part of the Appwrite contributors' guide. Before you continue r Storage providers help us use various storage services to store our Appwrite data. As of the writing of these lines we already support Local storage, [AWS S3](https://aws.amazon.com/s3/) storage and [Digitalocean Spaces](https://www.digitalocean.com/products/spaces/) storage. -As the storage library is separated into [utopia-php/storage](https://github.com/utopia-php/storage), adding new storage adapter will consist of two phases. First adding and implementing the new adapter in the [utopia-php/storage](https://github.com/utopia-php/storage) and then adding support to the new storage adapter in Appwrite. +As the storage library is separated into [utopia-php/storage](https://github.com/utopia-php/storage), adding a new storage adapter will consist of two phases. First adding and implementing the new adapter in the [utopia-php/storage](https://github.com/utopia-php/storage) and then adding support to the new storage adapter in Appwrite. ### Phase 1 In phase 1, we will introduce and implement the new device adapter in [utopia-php/storage](https://github.com/utopia-php/storage) library. ### Add new adapter -Add a new storage adapter inside `src/Storage/Device/` folder. Use one of the existing ones as a reference. The new adapter class should extend `Device` class and implement all the required methods. +Add a new storage adapter inside the `src/Storage/Device/` folder. Use one of the existing ones as a reference. The new adapter class should extend `Device` class and implement all the required methods. Note that the class name should start with a capital letter as PHP FIG standards suggest. Always use properly named environment variables if any credentials are required. ### Introduce new device constant -Introduce newly added device constant in `src/Storage/Storage.php` alongside existing device constants. The device constant should start with `const DEVICE_` as the existing ones. +Introduce newly added device constants in `src/Storage/Storage.php` alongside existing device constants. The device constant should start with `const DEVICE_` as the existing ones. ### Introduce new device tests Add tests for the newly added device adapter inside `tests/Storage/Device`. Use the existing adapter tests as a reference. The test file and class should be properly named `Test.php` and class should be `Test` @@ -34,18 +34,18 @@ If everything goes well, create a new pull request in [utopia-php/storage](https ### Phase 2 In this phase we will add support to the new storage adapter in Appwrite. -* Note for this to happen, your PR in the first phase should have been merged and new version of [utopia-php/storage](https://github.com/utopia-php/storage) library released. +* Note for this to happen, your PR in the first phase should have been merged and a new version of [utopia-php/storage](https://github.com/utopia-php/storage) library released. ### Upgrade the utopia-php/storage dependency Upgrade the utopia-php/storage dependency in `composer.json` file. ### Introduce new environment variables -If required for the new adapter, may be for credentials, introduce new environment variables. The storage environment variables are prefixed as `_APP_STORAGE_DEVICE`. Please read [Adding Environment Variables]() guidelines in order to properly introduce new environment variables. +If required for the new adapter, maybe for credentials, introduce new environment variables. The storage environment variables are prefixed as `_APP_STORAGE_DEVICE`. Please read [Adding Environment Variables]() guidelines in order to properly introduce new environment variables. ### Implement the device case -In `app/controllers/shared/api.php` inside init function, there is a `switch/case` statements for each supported storage device. Implement the instantiation of your device type for your device case. The device cases are the devices constants listed in the `uptopa-php/storage/Storage` class. +In `app/controllers/shared/api.php` inside init function, there are `switch/case` statements for each supported storage device. Implement the instantiation of your device type for your device case. The device cases are the device constants listed in the `uptopa-php/storage/Storage` class. ### Test and verify everything works -To test you can switch to your newly added device using `_APP_STORAGE_DEVICE` environment variable. Then run `docker compose build && docker compose up -d` in order to build the containers with updated changes. Once the containers are running, login to Appwrite console and create a project. Then in storage section, try to upload, preview, delete files. +To test you can switch to your newly added device using `_APP_STORAGE_DEVICE` environment variable. Then run `docker compose build && docker compose up -d` in order to build the containers with updated changes. Once the containers are running, login to Appwrite console and create a project. Then in the storage section, try to upload, preview, delete files. If everything goes well, initiate a pull request to appwrite repository. From 7982a493323059f8c07e42690fd34f0d93bc962e Mon Sep 17 00:00:00 2001 From: Tushar Dahiya Date: Sun, 9 Oct 2022 16:50:11 +0530 Subject: [PATCH 04/94] Update add-storage-adapter.md --- docs/tutorials/add-storage-adapter.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorials/add-storage-adapter.md b/docs/tutorials/add-storage-adapter.md index f3d516d83b..71820b2ccf 100644 --- a/docs/tutorials/add-storage-adapter.md +++ b/docs/tutorials/add-storage-adapter.md @@ -21,7 +21,7 @@ Note that the class name should start with a capital letter as PHP FIG standards Always use properly named environment variables if any credentials are required. ### Introduce new device constant -Introduce newly added device constants in `src/Storage/Storage.php` alongside existing device constants. The device constant should start with `const DEVICE_` as the existing ones. +Introduce newly added device constant in `src/Storage/Storage.php` alongside existing device constants. The device constant should start with `const DEVICE_` as the existing ones. ### Introduce new device tests Add tests for the newly added device adapter inside `tests/Storage/Device`. Use the existing adapter tests as a reference. The test file and class should be properly named `Test.php` and class should be `Test` From 7536818ec29fe7089973e2d22d3df6480f2a61f4 Mon Sep 17 00:00:00 2001 From: Tushar Dahiya Date: Sun, 9 Oct 2022 16:53:25 +0530 Subject: [PATCH 05/94] Update add-runtime.md --- docs/tutorials/add-runtime.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tutorials/add-runtime.md b/docs/tutorials/add-runtime.md index 4ec416fdbb..7efdedacf9 100644 --- a/docs/tutorials/add-runtime.md +++ b/docs/tutorials/add-runtime.md @@ -90,7 +90,7 @@ The `Response` class must have two functions. For interpreted languages use the `path` and `file` parameters to find the file and require it. Please make sure to add appropriate checks to make sure the imported file is a function that you can execute. -5. Finally execute the function and handle whatever response the user's code returns. Try to wrap the function into a `try catch ` statement to handle any errors the user's function encounters and return them cleanly to the executor with the error schema. +5. Finally execute the function and handle whatever response the user's code returns. Try to wrap the function into a `try catch` statement to handle any errors the user's function encounters and return them cleanly to the executor with the error schema. ### 2.4 The Error Schema All errors that occur during the execution of a user's function **MUST** be returned using this JSON Object otherwise Appwrite will be unable to parse them for the user. @@ -237,7 +237,7 @@ Once you have found this, Add your own entry into this array like so: 'entrypoint' => 'Test file', // Replace with the name of the test file you wrote in ./tests/resources/LANGUAGE_NAME 'timeout' => 15, 'runtime' => 'LANGUAGE_NAME-VERSION', - 'tarname' => 'LANGUAGE_NAME-VERSION.tar.gz', // Note: If your version has a point in it replace it, with a dash instead for this value. + 'tarname' => 'LANGUAGE_NAME-VERSION.tar.gz', // Note: If your version has a point in it replace it with a dash instead for this value. ], ``` Make sure to replace all instances of `LANGUAGE_NAME` with your language's name and `VERSION` with your runtime's version. From 765dca4a3ee4adf30855c5037cf9922a231cdc0e Mon Sep 17 00:00:00 2001 From: Tushar Dahiya Date: Sun, 9 Oct 2022 16:55:17 +0530 Subject: [PATCH 06/94] Update add-route.md --- docs/tutorials/add-route.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorials/add-route.md b/docs/tutorials/add-route.md index 9278c2e806..1699ded6b3 100644 --- a/docs/tutorials/add-route.md +++ b/docs/tutorials/add-route.md @@ -106,7 +106,7 @@ App::post('/v1/storage/buckets/:bucketId/files') ``` #### Events -* event - A pattern that is associated with the route in behalf of real time messaging. +* event - A pattern that is associated with the route in behalf of realtime messaging. Placeholders marked as `[]` are parsed and replaced with their real values. ```php From 25f46908b6a7b58555c09eb19d71cc1000780bfd Mon Sep 17 00:00:00 2001 From: Tushar Dahiya Date: Sun, 9 Oct 2022 16:59:48 +0530 Subject: [PATCH 07/94] Update add-storage-adapter.md --- docs/tutorials/add-storage-adapter.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorials/add-storage-adapter.md b/docs/tutorials/add-storage-adapter.md index 71820b2ccf..a24902465a 100644 --- a/docs/tutorials/add-storage-adapter.md +++ b/docs/tutorials/add-storage-adapter.md @@ -40,7 +40,7 @@ In this phase we will add support to the new storage adapter in Appwrite. Upgrade the utopia-php/storage dependency in `composer.json` file. ### Introduce new environment variables -If required for the new adapter, maybe for credentials, introduce new environment variables. The storage environment variables are prefixed as `_APP_STORAGE_DEVICE`. Please read [Adding Environment Variables]() guidelines in order to properly introduce new environment variables. +Introduce new environment variables if the adaptor requires new configuration information or to pass in credentials. The storage environment variables are prefixed as `_APP_STORAGE_DEVICE`. Please read [Adding Environment Variables]() guidelines in order to properly introduce new environment variables. ### Implement the device case In `app/controllers/shared/api.php` inside init function, there are `switch/case` statements for each supported storage device. Implement the instantiation of your device type for your device case. The device cases are the device constants listed in the `uptopa-php/storage/Storage` class. From 1fcc5eccb17bdb0021f66e2832541e9c87a6aeb4 Mon Sep 17 00:00:00 2001 From: Akshay Rana Date: Mon, 17 Oct 2022 12:44:44 +0530 Subject: [PATCH 08/94] updated timestamp format to ISO string in realtime payload --- app/realtime.php | 4 ++-- src/Appwrite/Messaging/Adapter/Realtime.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/realtime.php b/app/realtime.php index be87c3d6e6..0b1d992922 100644 --- a/app/realtime.php +++ b/app/realtime.php @@ -237,7 +237,7 @@ $server->onWorkerStart(function (int $workerId) use ($server, $register, $stats, 'data' => [ 'events' => ['stats.connections'], 'channels' => ['project'], - 'timestamp' => DateTime::now(), + 'timestamp' => date('c'), 'payload' => [ $projectId => $payload[$projectId] ] @@ -264,7 +264,7 @@ $server->onWorkerStart(function (int $workerId) use ($server, $register, $stats, 'data' => [ 'events' => ['test.event'], 'channels' => ['tests'], - 'timestamp' => DateTime::now(), + 'timestamp' => date('c'), 'payload' => $payload ] ]; diff --git a/src/Appwrite/Messaging/Adapter/Realtime.php b/src/Appwrite/Messaging/Adapter/Realtime.php index 9151a5c0b5..c595c394e4 100644 --- a/src/Appwrite/Messaging/Adapter/Realtime.php +++ b/src/Appwrite/Messaging/Adapter/Realtime.php @@ -149,7 +149,7 @@ class Realtime extends Adapter 'data' => [ 'events' => $events, 'channels' => $channels, - 'timestamp' => DateTime::now(), + 'timestamp' => date('c'), 'payload' => $payload ] ])); From c08f2e65e6e0fa201d8584483caa814ef5212f83 Mon Sep 17 00:00:00 2001 From: Akshay Rana Date: Tue, 18 Oct 2022 22:22:01 +0530 Subject: [PATCH 09/94] Updated timestamp format Co-authored-by: Steven <1477010+stnguyen90@users.noreply.github.com> --- src/Appwrite/Messaging/Adapter/Realtime.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Appwrite/Messaging/Adapter/Realtime.php b/src/Appwrite/Messaging/Adapter/Realtime.php index c595c394e4..91b2e5e267 100644 --- a/src/Appwrite/Messaging/Adapter/Realtime.php +++ b/src/Appwrite/Messaging/Adapter/Realtime.php @@ -149,7 +149,7 @@ class Realtime extends Adapter 'data' => [ 'events' => $events, 'channels' => $channels, - 'timestamp' => date('c'), + 'timestamp' => DateTime::formatTz(DateTime::now()), 'payload' => $payload ] ])); From 641a4af8d460361cbda5d8ab9bda6246d1c152a2 Mon Sep 17 00:00:00 2001 From: Akshay Rana Date: Tue, 18 Oct 2022 22:40:50 +0530 Subject: [PATCH 10/94] upated the timestamp code --- app/realtime.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/realtime.php b/app/realtime.php index 0b1d992922..595f43b48f 100644 --- a/app/realtime.php +++ b/app/realtime.php @@ -237,7 +237,7 @@ $server->onWorkerStart(function (int $workerId) use ($server, $register, $stats, 'data' => [ 'events' => ['stats.connections'], 'channels' => ['project'], - 'timestamp' => date('c'), + 'timestamp' => DateTime::formatTz(DateTime::now()), 'payload' => [ $projectId => $payload[$projectId] ] @@ -264,7 +264,7 @@ $server->onWorkerStart(function (int $workerId) use ($server, $register, $stats, 'data' => [ 'events' => ['test.event'], 'channels' => ['tests'], - 'timestamp' => date('c'), + 'timestamp' => DateTime::formatTz(DateTime::now()), 'payload' => $payload ] ]; From 66893be7521d2c42f7164204683030a2924c7441 Mon Sep 17 00:00:00 2001 From: motasimmakki Date: Sat, 22 Oct 2022 10:07:18 +0530 Subject: [PATCH 11/94] docs: Removed unnecessary $ symbol and spaced correctly. --- docs/tutorials/add-route.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tutorials/add-route.md b/docs/tutorials/add-route.md index 6b1bf7e7cf..56bcf358a8 100644 --- a/docs/tutorials/add-route.md +++ b/docs/tutorials/add-route.md @@ -50,7 +50,7 @@ App::post('/v1/storage/buckets/:bucketId/files') #### Audit * audits.event - Identify the log in human-readable text. -* audits.userId - Signals the extraction of $userId in places that it's not available natively. +* audits.userId - Signals the extraction of userId in places that it's not available natively. * audits.resource - Signals the extraction part of the resource. @@ -65,7 +65,7 @@ App::post('/v1/account/create') * sdk.auth - Array of authentication types is passed in order to impose different authentication methods in different situations. * sdk.namespace - Refers to the route namespace. * sdk.method - Refers to the sdk method that needs to called. -* sdk.description - Description of the route,using markdown format. +* sdk.description - Description of the route, using markdown format. * sdk.sdk.response.code - Refers to the route http response status code expected. * sdk.auth.response.model - Refers the route http response expected. From 6ae1a122199f044671deba75f06b9613edbd62a5 Mon Sep 17 00:00:00 2001 From: Karlis Suvi <45097959+ks129@users.noreply.github.com> Date: Sat, 29 Oct 2022 09:04:57 +0000 Subject: [PATCH 12/94] Include response of 5xx status codes for function executions --- app/executor.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/executor.php b/app/executor.php index fba8c4c416..a8fa9eb1cd 100644 --- a/app/executor.php +++ b/app/executor.php @@ -548,6 +548,10 @@ App::post('/v1/execution') case $statusCode >= 500: $stderr = ($executorResponse ?? [])['stderr'] ?? 'Internal Runtime error.'; $stdout = ($executorResponse ?? [])['stdout'] ?? 'Internal Runtime error.'; + $res = ($executorResponse ?? [])['response'] ?? ''; + if (is_array($res)) { + $res = json_encode($res, JSON_UNESCAPED_UNICODE); + } break; case $statusCode >= 100: $stdout = $executorResponse['stdout']; From a82c8e88c283eae21454a8ffd092d5644ca88f31 Mon Sep 17 00:00:00 2001 From: Karlis Suvi <45097959+ks129@users.noreply.github.com> Date: Sun, 30 Oct 2022 12:14:01 +0200 Subject: [PATCH 13/94] Add changelog entry for #4610 --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 340aec16d4..5c34d9cd14 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,7 @@ ## Bugs - Fix license detection for Flutter and Dart SDKs [#4435](https://github.com/appwrite/appwrite/pull/4435) +- Fix not storing function's response on response codes 5xx [#4610](https://github.com/appwrite/appwrite/pull/4610) # Version 1.0.3 ## Bugs From 29c30a361b06e9451a437aa1d8a3b7de80ebd849 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Wed, 9 Nov 2022 11:45:15 +0000 Subject: [PATCH 14/94] Fix null warnings - Fixed Avatars isset operator - Added isset operator to openSSL data in files - dns_get_record does not throw errors, instead it logs a warning and returns false. Altered code accordingly. PHP Bug Report: https://bugs.php.net/bug.php?id=73149 - --- app/controllers/api/avatars.php | 4 ++-- app/controllers/api/storage.php | 14 +++++++------- src/Appwrite/Network/Validator/CNAME.php | 4 ++++ 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/controllers/api/avatars.php b/app/controllers/api/avatars.php index b7aef1505b..25c9fe8659 100644 --- a/app/controllers/api/avatars.php +++ b/app/controllers/api/avatars.php @@ -242,8 +242,8 @@ App::get('/v1/avatars/favicon') case 'jpeg': $size = \explode('x', \strtolower($sizes)); - $sizeWidth = (int) $size[0] ?? 0; - $sizeHeight = (int) $size[1] ?? 0; + $sizeWidth = (int) ($size[0] ?? 0); + $sizeHeight = (int) ($size[1] ?? 0); if (($sizeWidth * $sizeHeight) >= $space) { $space = $sizeWidth * $sizeHeight; diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 530f174cd0..04ff10ca61 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -565,10 +565,10 @@ App::post('/v1/storage/buckets/:bucketId/files') 'comment' => '', 'chunksTotal' => $chunks, 'chunksUploaded' => $chunksUploaded, - 'openSSLVersion' => $openSSLVersion, - 'openSSLCipher' => $openSSLCipher, - 'openSSLTag' => $openSSLTag, - 'openSSLIV' => $openSSLIV, + 'openSSLVersion' => $openSSLVersion ?? null, + 'openSSLCipher' => $openSSLCipher ?? null, + 'openSSLTag' => $openSSLTag ?? null, + 'openSSLIV' => $openSSLIV ?? null, 'search' => implode(' ', [$fileId, $fileName]), 'metadata' => $metadata, ]); @@ -581,9 +581,9 @@ App::post('/v1/storage/buckets/:bucketId/files') ->setAttribute('mimeType', $mimeType) ->setAttribute('sizeActual', $sizeActual) ->setAttribute('algorithm', $algorithm) - ->setAttribute('openSSLVersion', $openSSLVersion) - ->setAttribute('openSSLCipher', $openSSLCipher) - ->setAttribute('openSSLTag', $openSSLTag) + ->setAttribute('openSSLVersion', $openSSLVersion ?? null) + ->setAttribute('openSSLCipher', $openSSLCipher ?? null) + ->setAttribute('openSSLTag', $openSSLTag ?? null) ->setAttribute('openSSLIV', $openSSLIV) ->setAttribute('metadata', $metadata) ->setAttribute('chunksUploaded', $chunksUploaded); diff --git a/src/Appwrite/Network/Validator/CNAME.php b/src/Appwrite/Network/Validator/CNAME.php index 93a302b962..678a57cecd 100644 --- a/src/Appwrite/Network/Validator/CNAME.php +++ b/src/Appwrite/Network/Validator/CNAME.php @@ -46,6 +46,10 @@ class CNAME extends Validator return false; } + if (!$records) { + return false; + } + foreach ($records as $record) { if (isset($record['target']) && $record['target'] === $this->target) { return true; From a0ab93432845fd6e807bad4921d2c6063c574996 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Wed, 9 Nov 2022 13:23:14 +0000 Subject: [PATCH 15/94] Fix another null warning --- app/controllers/api/storage.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 04ff10ca61..837bb9e541 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -584,7 +584,7 @@ App::post('/v1/storage/buckets/:bucketId/files') ->setAttribute('openSSLVersion', $openSSLVersion ?? null) ->setAttribute('openSSLCipher', $openSSLCipher ?? null) ->setAttribute('openSSLTag', $openSSLTag ?? null) - ->setAttribute('openSSLIV', $openSSLIV) + ->setAttribute('openSSLIV', $openSSLIV ?? null) ->setAttribute('metadata', $metadata) ->setAttribute('chunksUploaded', $chunksUploaded); From bc915483ff96e74e9c06257e02ab76e9bb0add89 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Wed, 9 Nov 2022 13:52:46 +0000 Subject: [PATCH 16/94] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 2c649ab5f0..0230b0f840 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,7 @@ ## Bugs - Fix license detection for Flutter and Dart SDKs [#4435](https://github.com/appwrite/appwrite/pull/4435) - Fix missing realtime event for create function deployment [#4574](https://github.com/appwrite/appwrite/pull/4574) +- Fix a few null safety warnings [#4654](https://github.com/appwrite/appwrite/pull/4654) # Version 1.0.3 ## Bugs From 956db2ec2ff29882b0a5a0ec99e968f7f33d5aff Mon Sep 17 00:00:00 2001 From: Ikko Ashimine Date: Mon, 14 Nov 2022 21:31:08 +0900 Subject: [PATCH 17/94] Fix typo in Model/Locale.php Europian -> European --- src/Appwrite/Utopia/Response/Model/Locale.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Appwrite/Utopia/Response/Model/Locale.php b/src/Appwrite/Utopia/Response/Model/Locale.php index e883a76fd4..fdfa363acd 100644 --- a/src/Appwrite/Utopia/Response/Model/Locale.php +++ b/src/Appwrite/Utopia/Response/Model/Locale.php @@ -42,7 +42,7 @@ class Locale extends Model ]) ->addRule('eu', [ 'type' => self::TYPE_BOOLEAN, - 'description' => 'True if country is part of the Europian Union.', + 'description' => 'True if country is part of the European Union.', 'default' => false, 'example' => false, ]) From a19e668d790392fce616528931801ec509da7b3d Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Mon, 14 Nov 2022 13:11:43 +0000 Subject: [PATCH 18/94] Update storage.php --- app/controllers/api/storage.php | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 837bb9e541..690c0050ad 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -542,6 +542,11 @@ App::post('/v1/storage/buckets/:bucketId/files') $sizeActual = $deviceFiles->getFileSize($path); $fileHash = $deviceFiles->getFileHash($path); + $openSSLVersion = null; + $openSSLCipher = null; + $openSSLTag = null; + $openSSLIV = null; + if ($bucket->getAttribute('encryption', true) && $fileSize <= APP_STORAGE_READ_BUFFER) { $openSSLVersion = '1'; $openSSLCipher = OpenSSL::CIPHER_AES_128_GCM; @@ -565,10 +570,10 @@ App::post('/v1/storage/buckets/:bucketId/files') 'comment' => '', 'chunksTotal' => $chunks, 'chunksUploaded' => $chunksUploaded, - 'openSSLVersion' => $openSSLVersion ?? null, - 'openSSLCipher' => $openSSLCipher ?? null, - 'openSSLTag' => $openSSLTag ?? null, - 'openSSLIV' => $openSSLIV ?? null, + 'openSSLVersion' => $openSSLVersion, + 'openSSLCipher' => $openSSLCipher, + 'openSSLTag' => $openSSLTag, + 'openSSLIV' => $openSSLIV, 'search' => implode(' ', [$fileId, $fileName]), 'metadata' => $metadata, ]); @@ -581,10 +586,10 @@ App::post('/v1/storage/buckets/:bucketId/files') ->setAttribute('mimeType', $mimeType) ->setAttribute('sizeActual', $sizeActual) ->setAttribute('algorithm', $algorithm) - ->setAttribute('openSSLVersion', $openSSLVersion ?? null) - ->setAttribute('openSSLCipher', $openSSLCipher ?? null) - ->setAttribute('openSSLTag', $openSSLTag ?? null) - ->setAttribute('openSSLIV', $openSSLIV ?? null) + ->setAttribute('openSSLVersion', $openSSLVersion) + ->setAttribute('openSSLCipher', $openSSLCipher) + ->setAttribute('openSSLTag', $openSSLTag) + ->setAttribute('openSSLIV', $openSSLIV) ->setAttribute('metadata', $metadata) ->setAttribute('chunksUploaded', $chunksUploaded); From 3e0456291ff3dac9c8baf4a78d33d7d14fd3fc28 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Tue, 22 Nov 2022 09:42:29 -0800 Subject: [PATCH 19/94] Update PR template 1. Ask for why in description to help with troubleshooting in the future 2. Change related PRs to a list so it renders nicer 3. Remove changes.md task in favor of just using milestones to track changes 4. Add reminder to check if API specs need to be updated --- .github/PULL_REQUEST_TEMPLATE.md | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 8522022bdb..ab59c97ff7 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -11,21 +11,17 @@ Happy contributing! ## What does this PR do? -(Provide a description of what this PR does.) +(Provide a description of what this PR does and why it's needed.) ## Test Plan -(Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work.) +(Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work. Screenshots may also be helpful.) ## Related PRs and Issues -(If this PR is related to any other PR or resolves any issue or related to any issue link all related PR and issues here.) +- (Related PR or issue) -### Have you added your change to the [Changelog](https://github.com/appwrite/appwrite/blob/master/CHANGES.md)? +## Checklist -(The CHANGES.md file tracks all the changes that make it to the `main` branch. Add your change to this file in the following format) -- One line description of your PR [#pr_number](Link to your PR) - -### Have you read the [Contributing Guidelines on issues](https://github.com/appwrite/appwrite/blob/master/CONTRIBUTING.md)? - -(Write your answer here.) +- [ ] Have you read the [Contributing Guidelines on issues](https://github.com/appwrite/appwrite/blob/master/CONTRIBUTING.md)? +- [ ] If the PR includes a change to an API's metadata (desc, label, params, etc.), does it also include updated API specs and example docs? From 77d4627d42442fb8d9f4750cb44e32c9c6397bc7 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Sat, 26 Nov 2022 19:45:29 +0400 Subject: [PATCH 20/94] feat: use constants in switch case --- app/controllers/api/storage.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 3c8ffc5644..fde7c6b828 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -65,7 +65,7 @@ App::post('/v1/storage/buckets') ->param('enabled', true, new Boolean(true), 'Is bucket enabled?', true) ->param('maximumFileSize', (int) App::getEnv('_APP_STORAGE_LIMIT', 0), new Range(1, (int) App::getEnv('_APP_STORAGE_LIMIT', 0)), 'Maximum file size allowed in bytes. Maximum allowed value is ' . Storage::human(App::getEnv('_APP_STORAGE_LIMIT', 0), 0) . '. 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)', true) ->param('allowedFileExtensions', [], new ArrayList(new Text(64), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Allowed file extensions. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' extensions are allowed, each 64 characters long.', true) - ->param('compression', 'none', new WhiteList([COMPRESSION_TYPE_NONE, COMPRESSION_TYPE_GZIP, COMPRESSION_TYPE_ZSTD]), 'Compression algorithm choosen for compression. Can be one of ' . COMPRESSION_TYPE_NONE . ', [' . COMPRESSION_TYPE_GZIP . '](https://en.wikipedia.org/wiki/Gzip), or [' . COMPRESSION_TYPE_ZSTD . '](https://en.wikipedia.org/wiki/Zstd), For file size above ' . Storage::human(APP_STORAGE_READ_BUFFER, 0) . ' compression is skipped even if it\'s enabled', true) + ->param('compression', COMPRESSION_TYPE_NONE, new WhiteList([COMPRESSION_TYPE_NONE, COMPRESSION_TYPE_GZIP, COMPRESSION_TYPE_ZSTD]), 'Compression algorithm choosen for compression. Can be one of ' . COMPRESSION_TYPE_NONE . ', [' . COMPRESSION_TYPE_GZIP . '](https://en.wikipedia.org/wiki/Gzip), or [' . COMPRESSION_TYPE_ZSTD . '](https://en.wikipedia.org/wiki/Zstd), For file size above ' . Storage::human(APP_STORAGE_READ_BUFFER, 0) . ' compression is skipped even if it\'s enabled', true) ->param('encryption', true, new Boolean(true), 'Is encryption enabled? For file size above ' . Storage::human(APP_STORAGE_READ_BUFFER, 0) . ' encryption is skipped even if it\'s enabled', true) ->param('antivirus', true, new Boolean(true), 'Is virus scanning enabled? For file size above ' . Storage::human(APP_LIMIT_ANTIVIRUS, 0) . ' AntiVirus scanning is skipped even if it\'s enabled', true) ->inject('response') @@ -237,7 +237,7 @@ App::put('/v1/storage/buckets/:bucketId') ->param('enabled', true, new Boolean(true), 'Is bucket enabled?', true) ->param('maximumFileSize', null, new Range(1, (int) App::getEnv('_APP_STORAGE_LIMIT', 0)), 'Maximum file size allowed in bytes. Maximum allowed value is ' . Storage::human((int)App::getEnv('_APP_STORAGE_LIMIT', 0), 0) . '. 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)', true) ->param('allowedFileExtensions', [], new ArrayList(new Text(64), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Allowed file extensions. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' extensions are allowed, each 64 characters long.', true) - ->param('compression', 'none', new WhiteList([COMPRESSION_TYPE_NONE, COMPRESSION_TYPE_GZIP, COMPRESSION_TYPE_ZSTD]), 'Compression algorithm choosen for compression. Can be one of ' . COMPRESSION_TYPE_NONE . ', [' . COMPRESSION_TYPE_GZIP . '](https://en.wikipedia.org/wiki/Gzip), or [' . COMPRESSION_TYPE_ZSTD . '](https://en.wikipedia.org/wiki/Zstd), For file size above ' . Storage::human(APP_STORAGE_READ_BUFFER, 0) . ' compression is skipped even if it\'s enabled', true) + ->param('compression', COMPRESSION_TYPE_NONE, new WhiteList([COMPRESSION_TYPE_NONE, COMPRESSION_TYPE_GZIP, COMPRESSION_TYPE_ZSTD]), 'Compression algorithm choosen for compression. Can be one of ' . COMPRESSION_TYPE_NONE . ', [' . COMPRESSION_TYPE_GZIP . '](https://en.wikipedia.org/wiki/Gzip), or [' . COMPRESSION_TYPE_ZSTD . '](https://en.wikipedia.org/wiki/Zstd), For file size above ' . Storage::human(APP_STORAGE_READ_BUFFER, 0) . ' compression is skipped even if it\'s enabled', true) ->param('encryption', true, new Boolean(true), 'Is encryption enabled? For file size above ' . Storage::human(APP_STORAGE_READ_BUFFER, 0) . ' encryption is skipped even if it\'s enabled', true) ->param('antivirus', true, new Boolean(true), 'Is virus scanning enabled? For file size above ' . Storage::human(APP_LIMIT_ANTIVIRUS, 0) . ' AntiVirus scanning is skipped even if it\'s enabled', true) ->inject('response') @@ -509,14 +509,14 @@ App::post('/v1/storage/buckets/:bucketId/files') $mimeType = $deviceFiles->getFileMimeType($path); // Get mime-type before compression and encryption $data = ''; // Compression - $algorithm = $bucket->getAttribute('compression', 'none'); - if ($fileSize <= APP_STORAGE_READ_BUFFER && $algorithm != 'none') { + $algorithm = $bucket->getAttribute('compression', COMPRESSION_TYPE_NONE); + if ($fileSize <= APP_STORAGE_READ_BUFFER && $algorithm != COMPRESSION_TYPE_NONE) { $data = $deviceFiles->read($path); switch ($algorithm) { - case 'zstd': + case COMPRESSION_TYPE_ZSTD: $compressor = new Zstd(); break; - case 'gzip': + case COMPRESSION_TYPE_GZIP: default: $compressor = new GZIP(); break; From f96128e14fb7efbe554b074c28545997c2b54e83 Mon Sep 17 00:00:00 2001 From: fogelito Date: Wed, 14 Dec 2022 17:42:25 +0200 Subject: [PATCH 21/94] Changing Id --- app/config/collections.php | 2 +- app/controllers/api/account.php | 2 +- app/controllers/api/databases.php | 2 +- app/controllers/api/functions.php | 2 +- app/controllers/api/projects.php | 2 +- app/controllers/api/storage.php | 2 +- app/controllers/api/teams.php | 2 +- app/controllers/api/users.php | 2 +- app/controllers/mock.php | 2 +- app/http.php | 2 +- app/init.php | 2 +- app/realtime.php | 2 +- app/workers/builds.php | 2 +- app/workers/certificates.php | 2 +- app/workers/functions.php | 2 +- composer.json | 2 +- composer.lock | 471 +++++++++++++++--- src/Appwrite/Messaging/Adapter/Realtime.php | 2 +- src/Appwrite/Migration/Migration.php | 2 +- src/Appwrite/Migration/Version/V15.php | 2 +- tests/e2e/General/AbuseTest.php | 2 +- tests/e2e/Scopes/ProjectConsole.php | 2 +- tests/e2e/Scopes/ProjectCustom.php | 2 +- tests/e2e/Scopes/Scope.php | 2 +- tests/e2e/Services/Account/AccountBase.php | 2 +- .../Account/AccountCustomClientTest.php | 2 +- .../Account/AccountCustomServerTest.php | 2 +- .../e2e/Services/Databases/DatabasesBase.php | 2 +- .../Databases/DatabasesConsoleClientTest.php | 2 +- .../Databases/DatabasesCustomClientTest.php | 2 +- .../Databases/DatabasesCustomServerTest.php | 2 +- .../DatabasesPermissionsGuestTest.php | 2 +- .../DatabasesPermissionsMemberTest.php | 2 +- .../DatabasesPermissionsTeamTest.php | 2 +- .../Functions/FunctionsConsoleClientTest.php | 2 +- .../Functions/FunctionsCustomClientTest.php | 2 +- .../Functions/FunctionsCustomServerTest.php | 2 +- .../Projects/ProjectsConsoleClientTest.php | 2 +- .../Realtime/RealtimeConsoleClientTest.php | 2 +- .../Realtime/RealtimeCustomClientTest.php | 2 +- tests/e2e/Services/Storage/StorageBase.php | 2 +- .../Storage/StorageConsoleClientTest.php | 2 +- .../Storage/StorageCustomClientTest.php | 2 +- .../Storage/StorageCustomServerTest.php | 2 +- tests/e2e/Services/Teams/TeamsBase.php | 2 +- tests/e2e/Services/Teams/TeamsBaseClient.php | 2 +- .../Services/Teams/TeamsConsoleClientTest.php | 2 +- tests/e2e/Services/Users/UsersBase.php | 2 +- tests/e2e/Services/Webhooks/WebhooksBase.php | 2 +- .../Webhooks/WebhooksCustomClientTest.php | 2 +- .../Webhooks/WebhooksCustomServerTest.php | 2 +- tests/unit/Auth/AuthTest.php | 2 +- .../unit/Messaging/MessagingChannelsTest.php | 2 +- tests/unit/Messaging/MessagingGuestTest.php | 2 +- tests/unit/Messaging/MessagingTest.php | 2 +- tests/unit/Network/Validators/OriginTest.php | 2 +- 56 files changed, 466 insertions(+), 115 deletions(-) diff --git a/app/config/collections.php b/app/config/collections.php index bdc14d9105..9a1905a4b3 100644 --- a/app/config/collections.php +++ b/app/config/collections.php @@ -3,7 +3,7 @@ use Appwrite\Auth\Auth; use Utopia\Config\Config; use Utopia\Database\Database; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; $providers = Config::getParam('providers', []); $auth = Config::getParam('auth', []); diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 45fb03062f..179e25b562 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -29,7 +29,7 @@ use Utopia\Database\Database; use Utopia\Database\Document; use Utopia\Database\DateTime; use Utopia\Database\Exception\Duplicate; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Query; use Utopia\Database\Role; diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 725c163c73..c1f2b582a4 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -7,7 +7,7 @@ use Utopia\Audit\Audit; use Utopia\Database\Permission; use Utopia\Database\Role; use Utopia\Database\Validator\DatetimeValidator; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Validator\Boolean; use Utopia\Validator\FloatValidator; use Utopia\Validator\Integer; diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index bfc1ccba42..45cc91f423 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -9,7 +9,7 @@ use Appwrite\Event\Func; use Appwrite\Event\Validator\Event as ValidatorEvent; use Appwrite\Extend\Exception; use Appwrite\Utopia\Database\Validator\CustomId; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; use Utopia\Database\Validator\UID; diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 1fc60c3725..44705fcc7f 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -17,7 +17,7 @@ use Utopia\Audit\Audit; use Utopia\Config\Config; use Utopia\Database\Database; use Utopia\Database\Document; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\DateTime; use Utopia\Database\Permission; use Utopia\Database\Query; diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 3c8ffc5644..94efd4e5be 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -16,7 +16,7 @@ use Utopia\Database\Exception\Duplicate; use Utopia\Database\Exception\Authorization as AuthorizationException; use Utopia\Database\Exception\Duplicate as DuplicateException; use Utopia\Database\Exception\Structure as StructureException; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Query; use Utopia\Database\Role; diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 567560c6a8..7d5e8bc6e5 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -26,7 +26,7 @@ use Utopia\Database\Database; use Utopia\Database\Document; use Utopia\Database\Exception\Authorization as AuthorizationException; use Utopia\Database\Exception\Duplicate; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Query; use Utopia\Database\DateTime; diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index dce493b024..0d4d8a311d 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -16,7 +16,7 @@ use Appwrite\Utopia\Response; use Utopia\App; use Utopia\Audit\Audit; use Utopia\Config\Config; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; use Utopia\Locale\Locale; diff --git a/app/controllers/mock.php b/app/controllers/mock.php index 034f18165b..82586a96b6 100644 --- a/app/controllers/mock.php +++ b/app/controllers/mock.php @@ -14,7 +14,7 @@ use Utopia\Validator\Integer; use Utopia\Validator\Text; use Utopia\Storage\Validator\File; use Utopia\Validator\WhiteList; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; App::get('/v1/mock/tests/foo') ->desc('Get Foo') diff --git a/app/http.php b/app/http.php index db9929ace7..019392a65f 100644 --- a/app/http.php +++ b/app/http.php @@ -10,7 +10,7 @@ use Swoole\Http\Response as SwooleResponse; use Utopia\App; use Utopia\CLI\Console; use Utopia\Config\Config; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; use Utopia\Database\Validator\Authorization; diff --git a/app/init.php b/app/init.php index ef9246e362..4f9d9375a8 100644 --- a/app/init.php +++ b/app/init.php @@ -37,7 +37,7 @@ use Appwrite\OpenSSL\OpenSSL; use Appwrite\Usage\Stats; use Appwrite\Utopia\View; use Utopia\App; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Logger\Logger; use Utopia\Config\Config; use Utopia\Locale\Locale; diff --git a/app/realtime.php b/app/realtime.php index ac4e2d669a..0f58ac9068 100644 --- a/app/realtime.php +++ b/app/realtime.php @@ -13,7 +13,7 @@ use Utopia\Abuse\Abuse; use Utopia\Abuse\Adapters\TimeLimit; use Utopia\App; use Utopia\CLI\Console; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Role; use Utopia\Logger\Log; use Utopia\Database\Database; diff --git a/app/workers/builds.php b/app/workers/builds.php index 5f33ed4010..3e74074ab0 100644 --- a/app/workers/builds.php +++ b/app/workers/builds.php @@ -11,7 +11,7 @@ use Utopia\Database\Database; use Utopia\Database\DateTime; use Utopia\App; use Utopia\CLI\Console; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Storage\Storage; use Utopia\Database\Document; use Utopia\Config\Config; diff --git a/app/workers/certificates.php b/app/workers/certificates.php index e7885bc669..39fac33c58 100644 --- a/app/workers/certificates.php +++ b/app/workers/certificates.php @@ -9,7 +9,7 @@ use Utopia\CLI\Console; use Utopia\Database\Database; use Utopia\Database\Document; use Utopia\Database\DateTime; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Query; use Utopia\Domains\Domain; diff --git a/app/workers/functions.php b/app/workers/functions.php index efd6ebb41f..db2038e0da 100644 --- a/app/workers/functions.php +++ b/app/workers/functions.php @@ -14,7 +14,7 @@ use Utopia\Config\Config; use Utopia\Database\Database; use Utopia\Database\DateTime; use Utopia\Database\Document; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Query; use Utopia\Database\Role; diff --git a/composer.json b/composer.json index 8e22745c76..129075299b 100644 --- a/composer.json +++ b/composer.json @@ -49,7 +49,7 @@ "utopia-php/cache": "0.8.*", "utopia-php/cli": "0.13.*", "utopia-php/config": "0.2.*", - "utopia-php/database": "0.28.*", + "utopia-php/database": "dev-feat-technical-debt as 0.28.0", "utopia-php/preloader": "0.2.*", "utopia-php/domains": "1.1.*", "utopia-php/framework": "0.25.*", diff --git a/composer.lock b/composer.lock index e97546287f..283eed1c21 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": "a2a79fc2e9ebdd4d05afa6632c642686", + "content-hash": "2e56cb6c348ecdf295ddc3f45731dcdd", "packages": [ { "name": "adhocore/jwt", @@ -345,6 +345,79 @@ }, "time": "2022-11-09T01:18:39+00:00" }, + { + "name": "composer/package-versions-deprecated", + "version": "1.11.99.5", + "source": { + "type": "git", + "url": "https://github.com/composer/package-versions-deprecated.git", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1.0 || ^2.0", + "php": "^7 || ^8" + }, + "replace": { + "ocramius/package-versions": "1.11.99" + }, + "require-dev": { + "composer/composer": "^1.9.3 || ^2.0@dev", + "ext-zip": "^1.13", + "phpunit/phpunit": "^6.5 || ^7" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "PackageVersions\\": "src/PackageVersions" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "support": { + "issues": "https://github.com/composer/package-versions-deprecated/issues", + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-01-17T14:14:24+00:00" + }, { "name": "dragonmantank/cron-expression", "version": "v3.3.1", @@ -804,17 +877,72 @@ "time": "2020-12-26T17:45:17+00:00" }, { - "name": "laravel/pint", - "version": "v1.2.0", + "name": "jean85/pretty-package-versions", + "version": "1.6.0", "source": { "type": "git", - "url": "https://github.com/laravel/pint.git", - "reference": "1d276e4c803397a26cc337df908f55c2a4e90d86" + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "1e0104b46f045868f11942aea058cd7186d6c303" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/1d276e4c803397a26cc337df908f55c2a4e90d86", - "reference": "1d276e4c803397a26cc337df908f55c2a4e90d86", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/1e0104b46f045868f11942aea058cd7186d6c303", + "reference": "1e0104b46f045868f11942aea058cd7186d6c303", + "shasum": "" + }, + "require": { + "composer/package-versions-deprecated": "^1.8.0", + "php": "^7.0|^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0|^8.5|^9.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A wrapper for ocramius/package-versions to get pretty versions strings", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/1.6.0" + }, + "time": "2021-02-04T16:20:16+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.2.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "e60e2112ee779ce60f253695b273d1646a17d6f1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/e60e2112ee779ce60f253695b273d1646a17d6f1", + "reference": "e60e2112ee779ce60f253695b273d1646a17d6f1", "shasum": "" }, "require": { @@ -826,10 +954,10 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.11.0", - "illuminate/view": "^9.27", - "laravel-zero/framework": "^9.1.3", - "mockery/mockery": "^1.5.0", - "nunomaduro/larastan": "^2.2", + "illuminate/view": "^9.32.0", + "laravel-zero/framework": "^9.2.0", + "mockery/mockery": "^1.5.1", + "nunomaduro/larastan": "^2.2.0", "nunomaduro/termwind": "^1.14.0", "pestphp/pest": "^1.22.1" }, @@ -867,7 +995,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2022-09-13T15:07:15+00:00" + "time": "2022-11-29T16:25:20+00:00" }, { "name": "matomo/device-detector", @@ -938,6 +1066,74 @@ }, "time": "2022-04-11T09:58:17+00:00" }, + { + "name": "mongodb/mongodb", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/mongodb/mongo-php-library.git", + "reference": "953dbc19443aa9314c44b7217a16873347e6840d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/953dbc19443aa9314c44b7217a16873347e6840d", + "reference": "953dbc19443aa9314c44b7217a16873347e6840d", + "shasum": "" + }, + "require": { + "ext-hash": "*", + "ext-json": "*", + "ext-mongodb": "^1.8.1", + "jean85/pretty-package-versions": "^1.2", + "php": "^7.0 || ^8.0", + "symfony/polyfill-php80": "^1.19" + }, + "require-dev": { + "squizlabs/php_codesniffer": "^3.5, <3.5.5", + "symfony/phpunit-bridge": "5.x-dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "MongoDB\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Andreas Braun", + "email": "andreas.braun@mongodb.com" + }, + { + "name": "Jeremy Mikola", + "email": "jmikola@gmail.com" + } + ], + "description": "MongoDB driver library", + "homepage": "https://jira.mongodb.org/browse/PHPLIB", + "keywords": [ + "database", + "driver", + "mongodb", + "persistence" + ], + "support": { + "issues": "https://github.com/mongodb/mongo-php-library/issues", + "source": "https://github.com/mongodb/mongo-php-library/tree/1.8.0" + }, + "time": "2020-11-25T12:26:02+00:00" + }, { "name": "mustangostang/spyc", "version": "0.6.3", @@ -1461,16 +1657,16 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.1.1", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918" + "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", - "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3", + "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3", "shasum": "" }, "require": { @@ -1479,7 +1675,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -1508,7 +1704,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0" }, "funding": [ { @@ -1524,7 +1720,90 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2022-11-25T10:21:52+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" }, { "name": "utopia-php/abuse", @@ -1837,22 +2116,23 @@ }, { "name": "utopia-php/database", - "version": "0.28.0", + "version": "dev-feat-technical-debt", "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "ef6506af1c09c22f5dc1e7859159d323f7fafa94" + "reference": "703f5daa6341e3c7bf97e3ccd5ebae75198c5caf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/ef6506af1c09c22f5dc1e7859159d323f7fafa94", - "reference": "ef6506af1c09c22f5dc1e7859159d323f7fafa94", + "url": "https://api.github.com/repos/utopia-php/database/zipball/703f5daa6341e3c7bf97e3ccd5ebae75198c5caf", + "reference": "703f5daa6341e3c7bf97e3ccd5ebae75198c5caf", "shasum": "" }, "require": { "php": ">=8.0", "utopia-php/cache": "0.8.*", - "utopia-php/framework": "0.*.*" + "utopia-php/framework": "0.*.*", + "utopia-php/mongo": "0.0.2" }, "require-dev": { "ext-mongodb": "*", @@ -1885,9 +2165,9 @@ ], "support": { "issues": "https://github.com/utopia-php/database/issues", - "source": "https://github.com/utopia-php/database/tree/0.28.0" + "source": "https://github.com/utopia-php/database/tree/feat-technical-debt" }, - "time": "2022-10-31T09:58:46+00:00" + "time": "2022-12-13T15:36:09+00:00" }, { "name": "utopia-php/domains", @@ -1945,24 +2225,25 @@ }, { "name": "utopia-php/framework", - "version": "0.25.0", + "version": "0.25.1", "source": { "type": "git", "url": "https://github.com/utopia-php/framework.git", - "reference": "c524f681254255c8204fbf7919c53bf3b4982636" + "reference": "2391b397135586b2100d39e338827bef8d2f4ad0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/framework/zipball/c524f681254255c8204fbf7919c53bf3b4982636", - "reference": "c524f681254255c8204fbf7919c53bf3b4982636", + "url": "https://api.github.com/repos/utopia-php/framework/zipball/2391b397135586b2100d39e338827bef8d2f4ad0", + "reference": "2391b397135586b2100d39e338827bef8d2f4ad0", "shasum": "" }, "require": { "php": ">=8.0.0" }, "require-dev": { + "laravel/pint": "^1.2", "phpunit/phpunit": "^9.5.25", - "vimeo/psalm": "^4.27.0" + "vimeo/psalm": "4.27.0" }, "type": "library", "autoload": { @@ -1982,9 +2263,9 @@ ], "support": { "issues": "https://github.com/utopia-php/framework/issues", - "source": "https://github.com/utopia-php/framework/tree/0.25.0" + "source": "https://github.com/utopia-php/framework/tree/0.25.1" }, - "time": "2022-11-02T09:49:57+00:00" + "time": "2022-11-23T18:22:23+00:00" }, { "name": "utopia-php/image", @@ -2209,6 +2490,66 @@ }, "time": "2022-09-29T11:22:48+00:00" }, + { + "name": "utopia-php/mongo", + "version": "0.0.2", + "source": { + "type": "git", + "url": "https://github.com/utopia-php/mongo.git", + "reference": "62f9a9c0201af91b6d0dd4f0aa8a335ec9b56a1e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/utopia-php/mongo/zipball/62f9a9c0201af91b6d0dd4f0aa8a335ec9b56a1e", + "reference": "62f9a9c0201af91b6d0dd4f0aa8a335ec9b56a1e", + "shasum": "" + }, + "require": { + "ext-mongodb": "*", + "mongodb/mongodb": "1.8.0", + "php": ">=8.0" + }, + "require-dev": { + "fakerphp/faker": "^1.14", + "laravel/pint": "1.2.*", + "phpstan/phpstan": "1.8.*", + "phpunit/phpunit": "^9.4", + "swoole/ide-helper": "4.8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Utopia\\Mongo\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eldad Fux", + "email": "eldad@appwrite.io" + }, + { + "name": "Wess", + "email": "wess@appwrite.io" + } + ], + "description": "A simple library to manage Mongo database", + "keywords": [ + "database", + "mongo", + "php", + "upf", + "utopia" + ], + "support": { + "issues": "https://github.com/utopia-php/mongo/issues", + "source": "https://github.com/utopia-php/mongo/tree/0.0.2" + }, + "time": "2022-11-08T11:58:46+00:00" + }, { "name": "utopia-php/orchestration", "version": "0.6.0", @@ -2777,16 +3118,16 @@ }, { "name": "matthiasmullie/minify", - "version": "1.3.69", + "version": "1.3.70", "source": { "type": "git", "url": "https://github.com/matthiasmullie/minify.git", - "reference": "a61c949cccd086808063611ef9698eabe42ef22f" + "reference": "2807d9f9bece6877577ad44acb5c801bb3ae536b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/a61c949cccd086808063611ef9698eabe42ef22f", - "reference": "a61c949cccd086808063611ef9698eabe42ef22f", + "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/2807d9f9bece6877577ad44acb5c801bb3ae536b", + "reference": "2807d9f9bece6877577ad44acb5c801bb3ae536b", "shasum": "" }, "require": { @@ -2795,9 +3136,10 @@ "php": ">=5.3.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2.0", - "matthiasmullie/scrapbook": "dev-master", - "phpunit/phpunit": ">=4.8" + "friendsofphp/php-cs-fixer": ">=2.0", + "matthiasmullie/scrapbook": ">=1.3", + "phpunit/phpunit": ">=4.8", + "squizlabs/php_codesniffer": ">=3.0" }, "suggest": { "psr/cache-implementation": "Cache implementation to use with Minify::cache" @@ -2820,12 +3162,12 @@ { "name": "Matthias Mullie", "email": "minify@mullie.eu", - "homepage": "http://www.mullie.eu", + "homepage": "https://www.mullie.eu", "role": "Developer" } ], "description": "CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.", - "homepage": "http://www.minifier.org", + "homepage": "https://github.com/matthiasmullie/minify", "keywords": [ "JS", "css", @@ -2835,7 +3177,7 @@ ], "support": { "issues": "https://github.com/matthiasmullie/minify/issues", - "source": "https://github.com/matthiasmullie/minify/tree/1.3.69" + "source": "https://github.com/matthiasmullie/minify/tree/1.3.70" }, "funding": [ { @@ -2843,7 +3185,7 @@ "type": "github" } ], - "time": "2022-08-01T09:00:18+00:00" + "time": "2022-12-09T12:56:44+00:00" }, { "name": "matthiasmullie/path-converter", @@ -3291,21 +3633,21 @@ }, { "name": "phpspec/prophecy", - "version": "v1.15.0", + "version": "v1.16.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be8cac52a0827776ff9ccda8c381ac5b71aeb359", + "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359", "shasum": "" }, "require": { "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", + "php": "^7.2 || 8.0.* || 8.1.* || 8.2.*", "phpdocumentor/reflection-docblock": "^5.2", "sebastian/comparator": "^3.0 || ^4.0", "sebastian/recursion-context": "^3.0 || ^4.0" @@ -3352,22 +3694,22 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + "source": "https://github.com/phpspec/prophecy/tree/v1.16.0" }, - "time": "2021-12-08T12:19:24+00:00" + "time": "2022-11-29T15:06:56+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.19", + "version": "9.2.21", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "c77b56b63e3d2031bd8997fcec43c1925ae46559" + "reference": "3f893e19712bb0c8bc86665d1562e9fd509c4ef0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c77b56b63e3d2031bd8997fcec43c1925ae46559", - "reference": "c77b56b63e3d2031bd8997fcec43c1925ae46559", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/3f893e19712bb0c8bc86665d1562e9fd509c4ef0", + "reference": "3f893e19712bb0c8bc86665d1562e9fd509c4ef0", "shasum": "" }, "require": { @@ -3423,7 +3765,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.19" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.21" }, "funding": [ { @@ -3431,7 +3773,7 @@ "type": "github" } ], - "time": "2022-11-18T07:47:47+00:00" + "time": "2022-12-14T13:26:54+00:00" }, { "name": "phpunit/php-file-iterator", @@ -5180,9 +5522,18 @@ "time": "2022-09-28T08:42:51+00:00" } ], - "aliases": [], + "aliases": [ + { + "package": "utopia-php/database", + "version": "dev-feat-technical-debt", + "alias": "0.28.0", + "alias_normalized": "0.28.0.0" + } + ], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "utopia-php/database": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { @@ -5206,5 +5557,5 @@ "platform-overrides": { "php": "8.0" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.2.0" } diff --git a/src/Appwrite/Messaging/Adapter/Realtime.php b/src/Appwrite/Messaging/Adapter/Realtime.php index dddbc59e7f..8d6bfa9837 100644 --- a/src/Appwrite/Messaging/Adapter/Realtime.php +++ b/src/Appwrite/Messaging/Adapter/Realtime.php @@ -6,7 +6,7 @@ use Utopia\Database\DateTime; use Utopia\Database\Document; use Appwrite\Messaging\Adapter; use Utopia\App; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Role; class Realtime extends Adapter diff --git a/src/Appwrite/Migration/Migration.php b/src/Appwrite/Migration/Migration.php index bef6e5e603..8c97b5ac61 100644 --- a/src/Appwrite/Migration/Migration.php +++ b/src/Appwrite/Migration/Migration.php @@ -10,7 +10,7 @@ use Utopia\CLI\Console; use Utopia\Config\Config; use Exception; use Utopia\App; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Validator\Authorization; Runtime::enableCoroutine(SWOOLE_HOOK_ALL); diff --git a/src/Appwrite/Migration/Version/V15.php b/src/Appwrite/Migration/Version/V15.php index f549c7fbdf..7775f7ad5b 100644 --- a/src/Appwrite/Migration/Version/V15.php +++ b/src/Appwrite/Migration/Version/V15.php @@ -11,7 +11,7 @@ use Utopia\CLI\Console; use Utopia\Config\Config; use Utopia\Database\Database; use Utopia\Database\Document; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; diff --git a/tests/e2e/General/AbuseTest.php b/tests/e2e/General/AbuseTest.php index 90a4b33800..0d5d36bfd9 100644 --- a/tests/e2e/General/AbuseTest.php +++ b/tests/e2e/General/AbuseTest.php @@ -8,7 +8,7 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideNone; use Utopia\App; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; diff --git a/tests/e2e/Scopes/ProjectConsole.php b/tests/e2e/Scopes/ProjectConsole.php index bc8ce4c0cf..dcc4aa7c33 100644 --- a/tests/e2e/Scopes/ProjectConsole.php +++ b/tests/e2e/Scopes/ProjectConsole.php @@ -2,7 +2,7 @@ namespace Tests\E2E\Scopes; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; trait ProjectConsole { diff --git a/tests/e2e/Scopes/ProjectCustom.php b/tests/e2e/Scopes/ProjectCustom.php index f2e4e84685..4d780d04c6 100644 --- a/tests/e2e/Scopes/ProjectCustom.php +++ b/tests/e2e/Scopes/ProjectCustom.php @@ -3,7 +3,7 @@ namespace Tests\E2E\Scopes; use Tests\E2E\Client; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; trait ProjectCustom { diff --git a/tests/e2e/Scopes/Scope.php b/tests/e2e/Scopes/Scope.php index 2a9f205272..939de516b6 100644 --- a/tests/e2e/Scopes/Scope.php +++ b/tests/e2e/Scopes/Scope.php @@ -5,7 +5,7 @@ namespace Tests\E2E\Scopes; use Appwrite\Tests\Retryable; use Tests\E2E\Client; use PHPUnit\Framework\TestCase; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; abstract class Scope extends TestCase { diff --git a/tests/e2e/Services/Account/AccountBase.php b/tests/e2e/Services/Account/AccountBase.php index e8bf146316..880323e728 100644 --- a/tests/e2e/Services/Account/AccountBase.php +++ b/tests/e2e/Services/Account/AccountBase.php @@ -4,7 +4,7 @@ namespace Tests\E2E\Services\Account; use Appwrite\Tests\Retry; use Tests\E2E\Client; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\DateTime; trait AccountBase diff --git a/tests/e2e/Services/Account/AccountCustomClientTest.php b/tests/e2e/Services/Account/AccountCustomClientTest.php index 65567b22e5..4a480597c1 100644 --- a/tests/e2e/Services/Account/AccountCustomClientTest.php +++ b/tests/e2e/Services/Account/AccountCustomClientTest.php @@ -8,7 +8,7 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; use Utopia\Database\DateTime; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use function sleep; diff --git a/tests/e2e/Services/Account/AccountCustomServerTest.php b/tests/e2e/Services/Account/AccountCustomServerTest.php index 85d140c829..143277608d 100644 --- a/tests/e2e/Services/Account/AccountCustomServerTest.php +++ b/tests/e2e/Services/Account/AccountCustomServerTest.php @@ -6,7 +6,7 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; class AccountCustomServerTest extends Scope { diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index a183325039..782965a18c 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -4,7 +4,7 @@ namespace Tests\E2E\Services\Databases; use Tests\E2E\Client; use Utopia\Database\Database; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\DateTime; use Utopia\Database\Permission; use Utopia\Database\Role; diff --git a/tests/e2e/Services/Databases/DatabasesConsoleClientTest.php b/tests/e2e/Services/Databases/DatabasesConsoleClientTest.php index 71fa7a590f..10f22179cc 100644 --- a/tests/e2e/Services/Databases/DatabasesConsoleClientTest.php +++ b/tests/e2e/Services/Databases/DatabasesConsoleClientTest.php @@ -6,7 +6,7 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Client; use Tests\E2E\Scopes\SideConsole; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; diff --git a/tests/e2e/Services/Databases/DatabasesCustomClientTest.php b/tests/e2e/Services/Databases/DatabasesCustomClientTest.php index 9f86bb66c0..8133ef0b3e 100644 --- a/tests/e2e/Services/Databases/DatabasesCustomClientTest.php +++ b/tests/e2e/Services/Databases/DatabasesCustomClientTest.php @@ -6,7 +6,7 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; diff --git a/tests/e2e/Services/Databases/DatabasesCustomServerTest.php b/tests/e2e/Services/Databases/DatabasesCustomServerTest.php index bd4e8aa77b..794deae06c 100644 --- a/tests/e2e/Services/Databases/DatabasesCustomServerTest.php +++ b/tests/e2e/Services/Databases/DatabasesCustomServerTest.php @@ -7,7 +7,7 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; use Tests\E2E\Client; use Utopia\Database\Database; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; diff --git a/tests/e2e/Services/Databases/DatabasesPermissionsGuestTest.php b/tests/e2e/Services/Databases/DatabasesPermissionsGuestTest.php index 1c15a363a8..c15269c088 100644 --- a/tests/e2e/Services/Databases/DatabasesPermissionsGuestTest.php +++ b/tests/e2e/Services/Databases/DatabasesPermissionsGuestTest.php @@ -6,7 +6,7 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; use Utopia\Database\Validator\Authorization; diff --git a/tests/e2e/Services/Databases/DatabasesPermissionsMemberTest.php b/tests/e2e/Services/Databases/DatabasesPermissionsMemberTest.php index 59091956b0..8f16b41839 100644 --- a/tests/e2e/Services/Databases/DatabasesPermissionsMemberTest.php +++ b/tests/e2e/Services/Databases/DatabasesPermissionsMemberTest.php @@ -6,7 +6,7 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideClient; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; diff --git a/tests/e2e/Services/Databases/DatabasesPermissionsTeamTest.php b/tests/e2e/Services/Databases/DatabasesPermissionsTeamTest.php index 07275c7524..bdaaeccf52 100644 --- a/tests/e2e/Services/Databases/DatabasesPermissionsTeamTest.php +++ b/tests/e2e/Services/Databases/DatabasesPermissionsTeamTest.php @@ -6,7 +6,7 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; diff --git a/tests/e2e/Services/Functions/FunctionsConsoleClientTest.php b/tests/e2e/Services/Functions/FunctionsConsoleClientTest.php index 68b9ac46ea..aa062321e8 100644 --- a/tests/e2e/Services/Functions/FunctionsConsoleClientTest.php +++ b/tests/e2e/Services/Functions/FunctionsConsoleClientTest.php @@ -6,7 +6,7 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Client; use Tests\E2E\Scopes\SideConsole; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Role; class FunctionsConsoleClientTest extends Scope diff --git a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php index 56b72e4468..0d5ddfae9b 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php @@ -9,7 +9,7 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideClient; use Utopia\CLI\Console; use Utopia\Database\Database; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Role; class FunctionsCustomClientTest extends Scope diff --git a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php index 29ceb1254f..a17f3ebe63 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php @@ -11,7 +11,7 @@ use Tests\E2E\Scopes\SideServer; use Utopia\CLI\Console; use Utopia\Database\Database; use Utopia\Database\DateTime; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; class FunctionsCustomServerTest extends Scope { diff --git a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php index 413b665897..45d8b5c181 100644 --- a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php +++ b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php @@ -10,7 +10,7 @@ use Tests\E2E\Services\Projects\ProjectsBase; use Tests\E2E\Client; use Utopia\Database\Database; use Utopia\Database\DateTime; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; class ProjectsConsoleClientTest extends Scope { diff --git a/tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php b/tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php index 500b3d48be..aa42efd92f 100644 --- a/tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php +++ b/tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php @@ -8,7 +8,7 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideConsole; use Tests\E2E\Services\Functions\FunctionsBase; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; diff --git a/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php b/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php index 7f09cb5703..0745f6e91c 100644 --- a/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php +++ b/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php @@ -8,7 +8,7 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; use Utopia\CLI\Console; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; use WebSocket\ConnectionException; diff --git a/tests/e2e/Services/Storage/StorageBase.php b/tests/e2e/Services/Storage/StorageBase.php index b4c28b0fa2..a24923edde 100644 --- a/tests/e2e/Services/Storage/StorageBase.php +++ b/tests/e2e/Services/Storage/StorageBase.php @@ -5,7 +5,7 @@ namespace Tests\E2E\Services\Storage; use CURLFile; use Tests\E2E\Client; use Utopia\Database\DateTime; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; diff --git a/tests/e2e/Services/Storage/StorageConsoleClientTest.php b/tests/e2e/Services/Storage/StorageConsoleClientTest.php index 8b4aaa1fca..8fda8e0464 100644 --- a/tests/e2e/Services/Storage/StorageConsoleClientTest.php +++ b/tests/e2e/Services/Storage/StorageConsoleClientTest.php @@ -6,7 +6,7 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideConsole; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; class StorageConsoleClientTest extends Scope { diff --git a/tests/e2e/Services/Storage/StorageCustomClientTest.php b/tests/e2e/Services/Storage/StorageCustomClientTest.php index fdb158ae5b..c9cfa72633 100644 --- a/tests/e2e/Services/Storage/StorageCustomClientTest.php +++ b/tests/e2e/Services/Storage/StorageCustomClientTest.php @@ -13,7 +13,7 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; use Utopia\Database\DateTime; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; use Utopia\Database\Validator\Authorization; diff --git a/tests/e2e/Services/Storage/StorageCustomServerTest.php b/tests/e2e/Services/Storage/StorageCustomServerTest.php index ac03f2b83c..2395e1d8fc 100644 --- a/tests/e2e/Services/Storage/StorageCustomServerTest.php +++ b/tests/e2e/Services/Storage/StorageCustomServerTest.php @@ -7,7 +7,7 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; use Utopia\Database\DateTime; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; class StorageCustomServerTest extends Scope { diff --git a/tests/e2e/Services/Teams/TeamsBase.php b/tests/e2e/Services/Teams/TeamsBase.php index 854a041503..3bad31e35c 100644 --- a/tests/e2e/Services/Teams/TeamsBase.php +++ b/tests/e2e/Services/Teams/TeamsBase.php @@ -5,7 +5,7 @@ namespace Tests\E2E\Services\Teams; use Tests\E2E\Client; use Utopia\Database\Database; use Utopia\Database\DateTime; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; trait TeamsBase { diff --git a/tests/e2e/Services/Teams/TeamsBaseClient.php b/tests/e2e/Services/Teams/TeamsBaseClient.php index 788626b102..0eb578e325 100644 --- a/tests/e2e/Services/Teams/TeamsBaseClient.php +++ b/tests/e2e/Services/Teams/TeamsBaseClient.php @@ -4,7 +4,7 @@ namespace Tests\E2E\Services\Teams; use Tests\E2E\Client; use Utopia\Database\DateTime; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; trait TeamsBaseClient { diff --git a/tests/e2e/Services/Teams/TeamsConsoleClientTest.php b/tests/e2e/Services/Teams/TeamsConsoleClientTest.php index 0f32425c92..e86c18a8e2 100644 --- a/tests/e2e/Services/Teams/TeamsConsoleClientTest.php +++ b/tests/e2e/Services/Teams/TeamsConsoleClientTest.php @@ -6,7 +6,7 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectConsole; use Tests\E2E\Scopes\SideClient; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; class TeamsConsoleClientTest extends Scope { diff --git a/tests/e2e/Services/Users/UsersBase.php b/tests/e2e/Services/Users/UsersBase.php index ac3b116b32..75cce56537 100644 --- a/tests/e2e/Services/Users/UsersBase.php +++ b/tests/e2e/Services/Users/UsersBase.php @@ -4,7 +4,7 @@ namespace Tests\E2E\Services\Users; use Appwrite\Tests\Retry; use Tests\E2E\Client; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; trait UsersBase { diff --git a/tests/e2e/Services/Webhooks/WebhooksBase.php b/tests/e2e/Services/Webhooks/WebhooksBase.php index bb7edfdb46..63a5e6379c 100644 --- a/tests/e2e/Services/Webhooks/WebhooksBase.php +++ b/tests/e2e/Services/Webhooks/WebhooksBase.php @@ -6,7 +6,7 @@ use Appwrite\Tests\Retry; use CURLFile; use Tests\E2E\Client; use Utopia\Database\DateTime; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; diff --git a/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php b/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php index 9e26322931..1a49b4b3f0 100644 --- a/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php +++ b/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php @@ -8,7 +8,7 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; use Utopia\Database\DateTime; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; class WebhooksCustomClientTest extends Scope { diff --git a/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php b/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php index f2f4b27260..fb0e381cdd 100644 --- a/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php +++ b/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php @@ -9,7 +9,7 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; use Utopia\CLI\Console; use Utopia\Database\DateTime; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; diff --git a/tests/unit/Auth/AuthTest.php b/tests/unit/Auth/AuthTest.php index a4ed5740cb..2b4d685a7c 100644 --- a/tests/unit/Auth/AuthTest.php +++ b/tests/unit/Auth/AuthTest.php @@ -5,7 +5,7 @@ namespace Tests\Unit\Auth; use Appwrite\Auth\Auth; use Utopia\Database\DateTime; use Utopia\Database\Document; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Role; use Utopia\Database\Validator\Authorization; use PHPUnit\Framework\TestCase; diff --git a/tests/unit/Messaging/MessagingChannelsTest.php b/tests/unit/Messaging/MessagingChannelsTest.php index 392f6d56fe..a5e5a0811f 100644 --- a/tests/unit/Messaging/MessagingChannelsTest.php +++ b/tests/unit/Messaging/MessagingChannelsTest.php @@ -6,7 +6,7 @@ use Appwrite\Auth\Auth; use Utopia\Database\Document; use Appwrite\Messaging\Adapter\Realtime; use PHPUnit\Framework\TestCase; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Role; class MessagingChannelsTest extends TestCase diff --git a/tests/unit/Messaging/MessagingGuestTest.php b/tests/unit/Messaging/MessagingGuestTest.php index d8ed58ad40..fa06e456dd 100644 --- a/tests/unit/Messaging/MessagingGuestTest.php +++ b/tests/unit/Messaging/MessagingGuestTest.php @@ -4,7 +4,7 @@ namespace Tests\Unit\Messaging; use Appwrite\Messaging\Adapter\Realtime; use PHPUnit\Framework\TestCase; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Role; class MessagingGuestTest extends TestCase diff --git a/tests/unit/Messaging/MessagingTest.php b/tests/unit/Messaging/MessagingTest.php index 0b7baf2631..e0ed7ac353 100644 --- a/tests/unit/Messaging/MessagingTest.php +++ b/tests/unit/Messaging/MessagingTest.php @@ -5,7 +5,7 @@ namespace Tests\Unit\Messaging; use Utopia\Database\Document; use Appwrite\Messaging\Adapter\Realtime; use PHPUnit\Framework\TestCase; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Permission; use Utopia\Database\Role; diff --git a/tests/unit/Network/Validators/OriginTest.php b/tests/unit/Network/Validators/OriginTest.php index 2392ae4cfa..30d18ecaa9 100644 --- a/tests/unit/Network/Validators/OriginTest.php +++ b/tests/unit/Network/Validators/OriginTest.php @@ -4,7 +4,7 @@ namespace Tests\Unit\Network\Validators; use Appwrite\Network\Validator\Origin; use PHPUnit\Framework\TestCase; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; class OriginTest extends TestCase { From 8ade72693296e76e1a16065677472872620b5983 Mon Sep 17 00:00:00 2001 From: fogelito Date: Wed, 14 Dec 2022 18:04:06 +0200 Subject: [PATCH 22/94] Changing Role + Permissions namespace --- app/controllers/api/account.php | 4 ++-- app/controllers/api/databases.php | 4 ++-- app/controllers/api/functions.php | 4 ++-- app/controllers/api/projects.php | 4 ++-- app/controllers/api/storage.php | 4 ++-- app/controllers/api/teams.php | 4 ++-- app/controllers/api/users.php | 4 ++-- app/controllers/general.php | 2 +- app/http.php | 4 ++-- app/realtime.php | 2 +- app/workers/functions.php | 4 ++-- src/Appwrite/Auth/Auth.php | 2 +- src/Appwrite/Messaging/Adapter/Realtime.php | 2 +- src/Appwrite/Migration/Version/V15.php | 4 ++-- src/Appwrite/Specification/Format/OpenAPI3.php | 4 ++-- src/Appwrite/Specification/Format/Swagger2.php | 4 ++-- src/Appwrite/Utopia/Request/Filters/V15.php | 4 ++-- src/Appwrite/Utopia/Response/Filters/V15.php | 4 ++-- src/Appwrite/Utopia/Response/Model/Execution.php | 2 +- tests/e2e/General/AbuseTest.php | 4 ++-- tests/e2e/General/UsageTest.php | 4 ++-- tests/e2e/Services/Databases/DatabasesBase.php | 4 ++-- tests/e2e/Services/Databases/DatabasesConsoleClientTest.php | 4 ++-- tests/e2e/Services/Databases/DatabasesCustomClientTest.php | 4 ++-- tests/e2e/Services/Databases/DatabasesCustomServerTest.php | 4 ++-- .../e2e/Services/Databases/DatabasesPermissionsGuestTest.php | 4 ++-- .../e2e/Services/Databases/DatabasesPermissionsMemberTest.php | 4 ++-- tests/e2e/Services/Databases/DatabasesPermissionsTeamTest.php | 4 ++-- tests/e2e/Services/Functions/FunctionsConsoleClientTest.php | 2 +- tests/e2e/Services/Functions/FunctionsCustomClientTest.php | 2 +- tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php | 4 ++-- tests/e2e/Services/Realtime/RealtimeCustomClientTest.php | 4 ++-- tests/e2e/Services/Storage/StorageBase.php | 4 ++-- tests/e2e/Services/Storage/StorageCustomClientTest.php | 4 ++-- tests/e2e/Services/Webhooks/WebhooksBase.php | 4 ++-- tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php | 4 ++-- tests/unit/Auth/AuthTest.php | 2 +- tests/unit/Messaging/MessagingChannelsTest.php | 2 +- tests/unit/Messaging/MessagingGuestTest.php | 2 +- tests/unit/Messaging/MessagingTest.php | 4 ++-- tests/unit/Utopia/Response/Filters/V15Test.php | 4 ++-- 41 files changed, 72 insertions(+), 72 deletions(-) diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 179e25b562..44efa65346 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -30,9 +30,9 @@ use Utopia\Database\Document; use Utopia\Database\DateTime; use Utopia\Database\Exception\Duplicate; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; +use Utopia\Database\Helpers\Permission; use Utopia\Database\Query; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; use Utopia\Database\Validator\Authorization; use Utopia\Database\Validator\UID; use Utopia\Locale\Locale; diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index c1f2b582a4..85f1826e57 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -4,8 +4,8 @@ use Utopia\App; use Appwrite\Event\Delete; use Appwrite\Extend\Exception; use Utopia\Audit\Audit; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; use Utopia\Database\Validator\DatetimeValidator; use Utopia\Database\Helpers\ID; use Utopia\Validator\Boolean; diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 45cc91f423..db01cc7b95 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -10,8 +10,8 @@ use Appwrite\Event\Validator\Event as ValidatorEvent; use Appwrite\Extend\Exception; use Appwrite\Utopia\Database\Validator\CustomId; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; use Utopia\Database\Validator\UID; use Appwrite\Usage\Stats; use Utopia\Storage\Device; diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 44705fcc7f..3bfc90d40c 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -19,9 +19,9 @@ use Utopia\Database\Database; use Utopia\Database\Document; use Utopia\Database\Helpers\ID; use Utopia\Database\DateTime; -use Utopia\Database\Permission; +use Utopia\Database\Helpers\Permission; use Utopia\Database\Query; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; use Utopia\Database\Validator\Authorization; use Utopia\Database\Validator\DatetimeValidator; use Utopia\Database\Validator\UID; diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 94efd4e5be..2372cb2719 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -17,9 +17,9 @@ use Utopia\Database\Exception\Authorization as AuthorizationException; use Utopia\Database\Exception\Duplicate as DuplicateException; use Utopia\Database\Exception\Structure as StructureException; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; +use Utopia\Database\Helpers\Permission; use Utopia\Database\Query; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; use Utopia\Database\Validator\Authorization; use Utopia\Database\Validator\Permissions; use Utopia\Database\Validator\UID; diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 7d5e8bc6e5..e648ab406a 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -27,10 +27,10 @@ use Utopia\Database\Document; use Utopia\Database\Exception\Authorization as AuthorizationException; use Utopia\Database\Exception\Duplicate; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; +use Utopia\Database\Helpers\Permission; use Utopia\Database\Query; use Utopia\Database\DateTime; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; use Utopia\Database\Validator\Authorization; use Utopia\Database\Validator\Key; use Utopia\Database\Validator\UID; diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 0d4d8a311d..f35f224313 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -17,8 +17,8 @@ use Utopia\App; use Utopia\Audit\Audit; use Utopia\Config\Config; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; use Utopia\Locale\Locale; use Appwrite\Extend\Exception; use Utopia\Database\Document; diff --git a/app/controllers/general.php b/app/controllers/general.php index 0c10dd46e9..71e7f5c5c4 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -3,7 +3,7 @@ require_once __DIR__ . '/../init.php'; use Utopia\App; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; use Utopia\Locale\Locale; use Utopia\Logger\Logger; use Utopia\Logger\Log; diff --git a/app/http.php b/app/http.php index 019392a65f..829b63b68e 100644 --- a/app/http.php +++ b/app/http.php @@ -11,8 +11,8 @@ use Utopia\App; use Utopia\CLI\Console; use Utopia\Config\Config; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; use Utopia\Database\Validator\Authorization; use Utopia\Audit\Audit; use Utopia\Abuse\Adapters\TimeLimit; diff --git a/app/realtime.php b/app/realtime.php index 0f58ac9068..8de916fcc4 100644 --- a/app/realtime.php +++ b/app/realtime.php @@ -14,7 +14,7 @@ use Utopia\Abuse\Adapters\TimeLimit; use Utopia\App; use Utopia\CLI\Console; use Utopia\Database\Helpers\ID; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; use Utopia\Logger\Log; use Utopia\Database\Database; use Utopia\Database\DateTime; diff --git a/app/workers/functions.php b/app/workers/functions.php index db2038e0da..d7cb8c7ff3 100644 --- a/app/workers/functions.php +++ b/app/workers/functions.php @@ -15,9 +15,9 @@ use Utopia\Database\Database; use Utopia\Database\DateTime; use Utopia\Database\Document; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; +use Utopia\Database\Helpers\Permission; use Utopia\Database\Query; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; require_once __DIR__ . '/../init.php'; diff --git a/src/Appwrite/Auth/Auth.php b/src/Appwrite/Auth/Auth.php index b397e9ea77..b737b5273a 100644 --- a/src/Appwrite/Auth/Auth.php +++ b/src/Appwrite/Auth/Auth.php @@ -12,7 +12,7 @@ use Appwrite\Auth\Hash\Sha; use Utopia\Database\Database; use Utopia\Database\Document; use Utopia\Database\DateTime; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; use Utopia\Database\Validator\Authorization; use Utopia\Database\Validator\Roles; diff --git a/src/Appwrite/Messaging/Adapter/Realtime.php b/src/Appwrite/Messaging/Adapter/Realtime.php index 8d6bfa9837..435972d0f5 100644 --- a/src/Appwrite/Messaging/Adapter/Realtime.php +++ b/src/Appwrite/Messaging/Adapter/Realtime.php @@ -7,7 +7,7 @@ use Utopia\Database\Document; use Appwrite\Messaging\Adapter; use Utopia\App; use Utopia\Database\Helpers\ID; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; class Realtime extends Adapter { diff --git a/src/Appwrite/Migration/Version/V15.php b/src/Appwrite/Migration/Version/V15.php index 7775f7ad5b..ac948d01d2 100644 --- a/src/Appwrite/Migration/Version/V15.php +++ b/src/Appwrite/Migration/Version/V15.php @@ -12,8 +12,8 @@ use Utopia\Config\Config; use Utopia\Database\Database; use Utopia\Database\Document; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class V15 extends Migration { diff --git a/src/Appwrite/Specification/Format/OpenAPI3.php b/src/Appwrite/Specification/Format/OpenAPI3.php index fb7208c569..1ad5dfd895 100644 --- a/src/Appwrite/Specification/Format/OpenAPI3.php +++ b/src/Appwrite/Specification/Format/OpenAPI3.php @@ -5,8 +5,8 @@ namespace Appwrite\Specification\Format; use Appwrite\Specification\Format; use Appwrite\Template\Template; use Appwrite\Utopia\Response\Model; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; use Utopia\Validator; class OpenAPI3 extends Format diff --git a/src/Appwrite/Specification/Format/Swagger2.php b/src/Appwrite/Specification/Format/Swagger2.php index 6eb27a11aa..7d056bea60 100644 --- a/src/Appwrite/Specification/Format/Swagger2.php +++ b/src/Appwrite/Specification/Format/Swagger2.php @@ -5,8 +5,8 @@ namespace Appwrite\Specification\Format; use Appwrite\Specification\Format; use Appwrite\Template\Template; use Appwrite\Utopia\Response\Model; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; use Utopia\Validator; class Swagger2 extends Format diff --git a/src/Appwrite/Utopia/Request/Filters/V15.php b/src/Appwrite/Utopia/Request/Filters/V15.php index 65b09e1f24..50e5ec0db7 100644 --- a/src/Appwrite/Utopia/Request/Filters/V15.php +++ b/src/Appwrite/Utopia/Request/Filters/V15.php @@ -4,9 +4,9 @@ namespace Appwrite\Utopia\Request\Filters; use Appwrite\Utopia\Request\Filter; use Utopia\Database\Database; -use Utopia\Database\Permission; +use Utopia\Database\Helpers\Permission; use Utopia\Database\Query; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; class V15 extends Filter { diff --git a/src/Appwrite/Utopia/Response/Filters/V15.php b/src/Appwrite/Utopia/Response/Filters/V15.php index a74f0f32ad..232feec201 100644 --- a/src/Appwrite/Utopia/Response/Filters/V15.php +++ b/src/Appwrite/Utopia/Response/Filters/V15.php @@ -5,8 +5,8 @@ namespace Appwrite\Utopia\Response\Filters; use Appwrite\Utopia\Response; use Appwrite\Utopia\Response\Filter; use Utopia\Database\Database; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class V15 extends Filter { diff --git a/src/Appwrite/Utopia/Response/Model/Execution.php b/src/Appwrite/Utopia/Response/Model/Execution.php index 13011a24b7..8672a91598 100644 --- a/src/Appwrite/Utopia/Response/Model/Execution.php +++ b/src/Appwrite/Utopia/Response/Model/Execution.php @@ -4,7 +4,7 @@ namespace Appwrite\Utopia\Response\Model; use Appwrite\Utopia\Response; use Appwrite\Utopia\Response\Model; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; class Execution extends Model { diff --git a/tests/e2e/General/AbuseTest.php b/tests/e2e/General/AbuseTest.php index 0d5d36bfd9..f5a2829974 100644 --- a/tests/e2e/General/AbuseTest.php +++ b/tests/e2e/General/AbuseTest.php @@ -9,8 +9,8 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideNone; use Utopia\App; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class AbuseTest extends Scope { diff --git a/tests/e2e/General/UsageTest.php b/tests/e2e/General/UsageTest.php index cbe90c91fb..7ef5606650 100644 --- a/tests/e2e/General/UsageTest.php +++ b/tests/e2e/General/UsageTest.php @@ -10,8 +10,8 @@ use Tests\E2E\Scopes\SideServer; use CURLFile; use Tests\E2E\Services\Functions\FunctionsBase; use Utopia\Database\DateTime; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class UsageTest extends Scope { diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index 782965a18c..083577ef94 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -6,8 +6,8 @@ use Tests\E2E\Client; use Utopia\Database\Database; use Utopia\Database\Helpers\ID; use Utopia\Database\DateTime; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; trait DatabasesBase { diff --git a/tests/e2e/Services/Databases/DatabasesConsoleClientTest.php b/tests/e2e/Services/Databases/DatabasesConsoleClientTest.php index 10f22179cc..ad97a2bb3e 100644 --- a/tests/e2e/Services/Databases/DatabasesConsoleClientTest.php +++ b/tests/e2e/Services/Databases/DatabasesConsoleClientTest.php @@ -7,8 +7,8 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Client; use Tests\E2E\Scopes\SideConsole; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class DatabasesConsoleClientTest extends Scope { diff --git a/tests/e2e/Services/Databases/DatabasesCustomClientTest.php b/tests/e2e/Services/Databases/DatabasesCustomClientTest.php index 8133ef0b3e..748070161d 100644 --- a/tests/e2e/Services/Databases/DatabasesCustomClientTest.php +++ b/tests/e2e/Services/Databases/DatabasesCustomClientTest.php @@ -7,8 +7,8 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class DatabasesCustomClientTest extends Scope { diff --git a/tests/e2e/Services/Databases/DatabasesCustomServerTest.php b/tests/e2e/Services/Databases/DatabasesCustomServerTest.php index 794deae06c..3fe28bbd29 100644 --- a/tests/e2e/Services/Databases/DatabasesCustomServerTest.php +++ b/tests/e2e/Services/Databases/DatabasesCustomServerTest.php @@ -8,8 +8,8 @@ use Tests\E2E\Scopes\SideServer; use Tests\E2E\Client; use Utopia\Database\Database; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class DatabasesCustomServerTest extends Scope { diff --git a/tests/e2e/Services/Databases/DatabasesPermissionsGuestTest.php b/tests/e2e/Services/Databases/DatabasesPermissionsGuestTest.php index c15269c088..b1d197f010 100644 --- a/tests/e2e/Services/Databases/DatabasesPermissionsGuestTest.php +++ b/tests/e2e/Services/Databases/DatabasesPermissionsGuestTest.php @@ -7,8 +7,8 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; use Utopia\Database\Validator\Authorization; class DatabasesPermissionsGuestTest extends Scope diff --git a/tests/e2e/Services/Databases/DatabasesPermissionsMemberTest.php b/tests/e2e/Services/Databases/DatabasesPermissionsMemberTest.php index 8f16b41839..860fb7fb12 100644 --- a/tests/e2e/Services/Databases/DatabasesPermissionsMemberTest.php +++ b/tests/e2e/Services/Databases/DatabasesPermissionsMemberTest.php @@ -7,8 +7,8 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideClient; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class DatabasesPermissionsMemberTest extends Scope { diff --git a/tests/e2e/Services/Databases/DatabasesPermissionsTeamTest.php b/tests/e2e/Services/Databases/DatabasesPermissionsTeamTest.php index bdaaeccf52..8377b9c803 100644 --- a/tests/e2e/Services/Databases/DatabasesPermissionsTeamTest.php +++ b/tests/e2e/Services/Databases/DatabasesPermissionsTeamTest.php @@ -7,8 +7,8 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class DatabasesPermissionsTeamTest extends Scope { diff --git a/tests/e2e/Services/Functions/FunctionsConsoleClientTest.php b/tests/e2e/Services/Functions/FunctionsConsoleClientTest.php index aa062321e8..cd01b257a1 100644 --- a/tests/e2e/Services/Functions/FunctionsConsoleClientTest.php +++ b/tests/e2e/Services/Functions/FunctionsConsoleClientTest.php @@ -7,7 +7,7 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Client; use Tests\E2E\Scopes\SideConsole; use Utopia\Database\Helpers\ID; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; class FunctionsConsoleClientTest extends Scope { diff --git a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php index 0d5ddfae9b..57d237b9af 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomClientTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomClientTest.php @@ -10,7 +10,7 @@ use Tests\E2E\Scopes\SideClient; use Utopia\CLI\Console; use Utopia\Database\Database; use Utopia\Database\Helpers\ID; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; class FunctionsCustomClientTest extends Scope { diff --git a/tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php b/tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php index aa42efd92f..cd2fb6f13b 100644 --- a/tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php +++ b/tests/e2e/Services/Realtime/RealtimeConsoleClientTest.php @@ -9,8 +9,8 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideConsole; use Tests\E2E\Services\Functions\FunctionsBase; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class RealtimeConsoleClientTest extends Scope { diff --git a/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php b/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php index 0745f6e91c..34ddea8721 100644 --- a/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php +++ b/tests/e2e/Services/Realtime/RealtimeCustomClientTest.php @@ -9,8 +9,8 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; use Utopia\CLI\Console; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; use WebSocket\ConnectionException; class RealtimeCustomClientTest extends Scope diff --git a/tests/e2e/Services/Storage/StorageBase.php b/tests/e2e/Services/Storage/StorageBase.php index a24923edde..359989e114 100644 --- a/tests/e2e/Services/Storage/StorageBase.php +++ b/tests/e2e/Services/Storage/StorageBase.php @@ -6,8 +6,8 @@ use CURLFile; use Tests\E2E\Client; use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; trait StorageBase { diff --git a/tests/e2e/Services/Storage/StorageCustomClientTest.php b/tests/e2e/Services/Storage/StorageCustomClientTest.php index c9cfa72633..4a697d584a 100644 --- a/tests/e2e/Services/Storage/StorageCustomClientTest.php +++ b/tests/e2e/Services/Storage/StorageCustomClientTest.php @@ -14,8 +14,8 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; use Utopia\Database\Validator\Authorization; class StorageCustomClientTest extends Scope diff --git a/tests/e2e/Services/Webhooks/WebhooksBase.php b/tests/e2e/Services/Webhooks/WebhooksBase.php index 63a5e6379c..d3d700a222 100644 --- a/tests/e2e/Services/Webhooks/WebhooksBase.php +++ b/tests/e2e/Services/Webhooks/WebhooksBase.php @@ -7,8 +7,8 @@ use CURLFile; use Tests\E2E\Client; use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; trait WebhooksBase { diff --git a/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php b/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php index fb0e381cdd..51f5ef2532 100644 --- a/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php +++ b/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php @@ -10,8 +10,8 @@ use Tests\E2E\Scopes\SideServer; use Utopia\CLI\Console; use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class WebhooksCustomServerTest extends Scope { diff --git a/tests/unit/Auth/AuthTest.php b/tests/unit/Auth/AuthTest.php index 2b4d685a7c..e64ef37dfe 100644 --- a/tests/unit/Auth/AuthTest.php +++ b/tests/unit/Auth/AuthTest.php @@ -6,7 +6,7 @@ use Appwrite\Auth\Auth; use Utopia\Database\DateTime; use Utopia\Database\Document; use Utopia\Database\Helpers\ID; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; use Utopia\Database\Validator\Authorization; use PHPUnit\Framework\TestCase; use Utopia\Database\Database; diff --git a/tests/unit/Messaging/MessagingChannelsTest.php b/tests/unit/Messaging/MessagingChannelsTest.php index a5e5a0811f..6fe7dda71f 100644 --- a/tests/unit/Messaging/MessagingChannelsTest.php +++ b/tests/unit/Messaging/MessagingChannelsTest.php @@ -7,7 +7,7 @@ use Utopia\Database\Document; use Appwrite\Messaging\Adapter\Realtime; use PHPUnit\Framework\TestCase; use Utopia\Database\Helpers\ID; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; class MessagingChannelsTest extends TestCase { diff --git a/tests/unit/Messaging/MessagingGuestTest.php b/tests/unit/Messaging/MessagingGuestTest.php index fa06e456dd..1aaa1febca 100644 --- a/tests/unit/Messaging/MessagingGuestTest.php +++ b/tests/unit/Messaging/MessagingGuestTest.php @@ -5,7 +5,7 @@ namespace Tests\Unit\Messaging; use Appwrite\Messaging\Adapter\Realtime; use PHPUnit\Framework\TestCase; use Utopia\Database\Helpers\ID; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Role; class MessagingGuestTest extends TestCase { diff --git a/tests/unit/Messaging/MessagingTest.php b/tests/unit/Messaging/MessagingTest.php index e0ed7ac353..c2e3971945 100644 --- a/tests/unit/Messaging/MessagingTest.php +++ b/tests/unit/Messaging/MessagingTest.php @@ -6,8 +6,8 @@ use Utopia\Database\Document; use Appwrite\Messaging\Adapter\Realtime; use PHPUnit\Framework\TestCase; use Utopia\Database\Helpers\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class MessagingTest extends TestCase { diff --git a/tests/unit/Utopia/Response/Filters/V15Test.php b/tests/unit/Utopia/Response/Filters/V15Test.php index ce7870483c..ab3a0b06ed 100644 --- a/tests/unit/Utopia/Response/Filters/V15Test.php +++ b/tests/unit/Utopia/Response/Filters/V15Test.php @@ -4,8 +4,8 @@ namespace Tests\Unit\Utopia\Response\Filters; use Appwrite\Utopia\Response\Filters\V15; use Appwrite\Utopia\Response; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; use PHPUnit\Framework\TestCase; use stdClass; From d7a833faef9be4b84c6ef78cdbf10dedda36728a Mon Sep 17 00:00:00 2001 From: fogelito Date: Wed, 14 Dec 2022 18:07:45 +0200 Subject: [PATCH 23/94] Changing Role + Permissions namespace --- tests/e2e/Services/Databases/DatabasesBase.php | 1 - tests/e2e/Services/Databases/DatabasesCustomServerTest.php | 1 - 2 files changed, 2 deletions(-) diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index 083577ef94..c81afcdd4e 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -3,7 +3,6 @@ namespace Tests\E2E\Services\Databases; use Tests\E2E\Client; -use Utopia\Database\Database; use Utopia\Database\Helpers\ID; use Utopia\Database\DateTime; use Utopia\Database\Helpers\Permission; diff --git a/tests/e2e/Services/Databases/DatabasesCustomServerTest.php b/tests/e2e/Services/Databases/DatabasesCustomServerTest.php index 3fe28bbd29..19a56941eb 100644 --- a/tests/e2e/Services/Databases/DatabasesCustomServerTest.php +++ b/tests/e2e/Services/Databases/DatabasesCustomServerTest.php @@ -6,7 +6,6 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; use Tests\E2E\Client; -use Utopia\Database\Database; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; From bdc3e9f9353da39fe808be7e81446a06f4ebda4d Mon Sep 17 00:00:00 2001 From: fogelito Date: Thu, 15 Dec 2022 10:51:27 +0200 Subject: [PATCH 24/94] $dateValidator --- phpunit.xml | 2 +- tests/e2e/General/UsageTest.php | 7 +++-- tests/e2e/Scopes/Scope.php | 11 +++++--- tests/e2e/Services/Account/AccountBase.php | 26 +++++++++---------- .../Account/AccountCustomClientTest.php | 12 ++++----- .../e2e/Services/Databases/DatabasesBase.php | 5 ++-- .../Functions/FunctionsCustomServerTest.php | 20 +++++++------- tests/e2e/Services/Storage/StorageBase.php | 10 +++---- .../Storage/StorageCustomClientTest.php | 20 +++++++------- .../Storage/StorageCustomServerTest.php | 4 +-- tests/e2e/Services/Teams/TeamsBase.php | 14 +++++----- tests/e2e/Services/Teams/TeamsBaseClient.php | 10 +++---- tests/e2e/Services/Teams/TeamsBaseServer.php | 8 +++--- tests/e2e/Services/Webhooks/WebhooksBase.php | 16 ++++++------ .../Webhooks/WebhooksCustomClientTest.php | 18 ++++++------- .../Webhooks/WebhooksCustomServerTest.php | 6 ++--- 16 files changed, 95 insertions(+), 94 deletions(-) diff --git a/phpunit.xml b/phpunit.xml index 4012c8c276..4074fe0f1c 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -6,7 +6,7 @@ convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" - stopOnFailure="false" + stopOnFailure="true" > diff --git a/tests/e2e/General/UsageTest.php b/tests/e2e/General/UsageTest.php index 7ef5606650..6483257ae2 100644 --- a/tests/e2e/General/UsageTest.php +++ b/tests/e2e/General/UsageTest.php @@ -9,7 +9,6 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; use CURLFile; use Tests\E2E\Services\Functions\FunctionsBase; -use Utopia\Database\DateTime; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; @@ -642,7 +641,7 @@ class UsageTest extends Scope $this->assertEquals(202, $deployment['headers']['status-code']); $this->assertNotEmpty($deployment['body']['$id']); - $this->assertEquals(true, DateTime::isValid($deployment['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($deployment['body']['$createdAt'])); $this->assertEquals('index.php', $deployment['body']['entrypoint']); // Wait for deployment to build. @@ -652,8 +651,8 @@ class UsageTest extends Scope $this->assertEquals(200, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['$createdAt'])); - $this->assertEquals(true, DateTime::isValid($response['body']['$updatedAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$updatedAt'])); $this->assertEquals($deploymentId, $response['body']['deployment']); $execution = $this->client->call(Client::METHOD_POST, '/functions/' . $functionId . '/executions', $headers, [ diff --git a/tests/e2e/Scopes/Scope.php b/tests/e2e/Scopes/Scope.php index 939de516b6..bb27adb8e0 100644 --- a/tests/e2e/Scopes/Scope.php +++ b/tests/e2e/Scopes/Scope.php @@ -6,6 +6,8 @@ use Appwrite\Tests\Retryable; use Tests\E2E\Client; use PHPUnit\Framework\TestCase; use Utopia\Database\Helpers\ID; +use Utopia\Database\Validator\DatetimeValidator; +use Utopia\Validator; abstract class Scope extends TestCase { @@ -16,10 +18,9 @@ abstract class Scope extends TestCase */ protected $client = null; - /** - * @var string - */ - protected $endpoint = 'http://localhost/v1'; + protected string $endpoint = 'http://localhost/v1'; + + public static Validator $dateValidator; protected function setUp(): void { @@ -28,6 +29,8 @@ abstract class Scope extends TestCase $this->client ->setEndpoint($this->endpoint) ; + + self::$dateValidator = new DatetimeValidator(); } protected function tearDown(): void diff --git a/tests/e2e/Services/Account/AccountBase.php b/tests/e2e/Services/Account/AccountBase.php index 880323e728..0bd4e58e0d 100644 --- a/tests/e2e/Services/Account/AccountBase.php +++ b/tests/e2e/Services/Account/AccountBase.php @@ -34,7 +34,7 @@ trait AccountBase $this->assertEquals($response['headers']['status-code'], 201); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $this->assertEquals($response['body']['name'], $name); @@ -198,7 +198,7 @@ trait AccountBase $this->assertEquals($response['headers']['status-code'], 200); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $this->assertEquals($response['body']['name'], $name); @@ -343,7 +343,7 @@ trait AccountBase $this->assertIsNumeric($response['body']['total']); $this->assertContains($response['body']['logs'][1]['event'], ["session.create"]); $this->assertEquals($response['body']['logs'][1]['ip'], filter_var($response['body']['logs'][1]['ip'], FILTER_VALIDATE_IP)); - $this->assertEquals(true, DateTime::isValid($response['body']['logs'][1]['time'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['logs'][1]['time'])); $this->assertEquals('Windows', $response['body']['logs'][1]['osName']); $this->assertEquals('WIN', $response['body']['logs'][1]['osCode']); @@ -365,7 +365,7 @@ trait AccountBase $this->assertContains($response['body']['logs'][2]['event'], ["user.create"]); $this->assertEquals($response['body']['logs'][2]['ip'], filter_var($response['body']['logs'][2]['ip'], FILTER_VALIDATE_IP)); - $this->assertEquals(true, DateTime::isValid($response['body']['logs'][2]['time'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['logs'][2]['time'])); $this->assertEquals('Windows', $response['body']['logs'][2]['osName']); $this->assertEquals('WIN', $response['body']['logs'][2]['osCode']); @@ -476,7 +476,7 @@ trait AccountBase $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $this->assertEquals($response['body']['name'], $newName); @@ -543,7 +543,7 @@ trait AccountBase $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $response = $this->client->call(Client::METHOD_POST, '/account/sessions/email', array_merge([ @@ -633,7 +633,7 @@ trait AccountBase $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $newEmail); /** @@ -675,7 +675,7 @@ trait AccountBase $this->assertEquals($response['headers']['status-code'], 201); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $data['email']); $this->assertEquals($response['body']['name'], $data['name']); @@ -817,7 +817,7 @@ trait AccountBase $this->assertEquals(201, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEmpty($response['body']['secret']); - $this->assertEquals(true, DateTime::isValid($response['body']['expire'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['expire'])); $lastEmail = $this->getLastEmail(); @@ -1119,7 +1119,7 @@ trait AccountBase $this->assertEquals(201, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEmpty($response['body']['secret']); - $this->assertEquals(true, DateTime::isValid($response['body']['expire'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['expire'])); $lastEmail = $this->getLastEmail(); @@ -1273,7 +1273,7 @@ trait AccountBase $this->assertEquals(201, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEmpty($response['body']['secret']); - $this->assertEquals(true, DateTime::isValid($response['body']['expire'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['expire'])); $userId = $response['body']['userId']; @@ -1379,7 +1379,7 @@ trait AccountBase $this->assertEquals($response['headers']['status-code'], 200); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $this->assertTrue($response['body']['emailVerification']); @@ -1439,7 +1439,7 @@ trait AccountBase $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $response = $this->client->call(Client::METHOD_POST, '/account/sessions/email', array_merge([ diff --git a/tests/e2e/Services/Account/AccountCustomClientTest.php b/tests/e2e/Services/Account/AccountCustomClientTest.php index 4a480597c1..d5a65edc7d 100644 --- a/tests/e2e/Services/Account/AccountCustomClientTest.php +++ b/tests/e2e/Services/Account/AccountCustomClientTest.php @@ -448,7 +448,7 @@ class AccountCustomClientTest extends Scope $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $response = $this->client->call(Client::METHOD_POST, '/account/sessions/email', array_merge([ @@ -699,7 +699,7 @@ class AccountCustomClientTest extends Scope $this->assertEquals(201, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEmpty($response['body']['secret']); - $this->assertEquals(true, DateTime::isValid($response['body']['expire'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['expire'])); $userId = $response['body']['userId']; @@ -799,7 +799,7 @@ class AccountCustomClientTest extends Scope $this->assertEquals($response['headers']['status-code'], 200); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['phone'], $number); $this->assertTrue($response['body']['phoneVerification']); @@ -850,7 +850,7 @@ class AccountCustomClientTest extends Scope $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $response = $this->client->call(Client::METHOD_POST, '/account/sessions/email', array_merge([ @@ -892,7 +892,7 @@ class AccountCustomClientTest extends Scope $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['phone'], $newPhone); /** @@ -941,7 +941,7 @@ class AccountCustomClientTest extends Scope $this->assertEquals(201, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEmpty($response['body']['secret']); - $this->assertEquals(true, DateTime::isValid($response['body']['expire'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['expire'])); \sleep(2); diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index c81afcdd4e..3209ff46b0 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -4,7 +4,6 @@ namespace Tests\E2E\Services\Databases; use Tests\E2E\Client; use Utopia\Database\Helpers\ID; -use Utopia\Database\DateTime; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; @@ -1531,8 +1530,8 @@ trait DatabasesBase $this->assertEquals($databaseId, $document['body']['$databaseId']); $this->assertEquals($document['body']['title'], 'Thor: Ragnaroc'); $this->assertEquals($document['body']['releaseYear'], 2017); - $this->assertEquals(true, DateTime::isValid($document['body']['$createdAt'])); - $this->assertEquals(true, DateTime::isValid($document['body']['birthDay'])); + $this->assertEquals(true, self::$dateValidator->isValid($document['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($document['body']['birthDay'])); $this->assertContains(Permission::read(Role::user($this->getUser()['$id'])), $document['body']['$permissions']); $this->assertContains(Permission::update(Role::user($this->getUser()['$id'])), $document['body']['$permissions']); $this->assertContains(Permission::delete(Role::user($this->getUser()['$id'])), $document['body']['$permissions']); diff --git a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php index a17f3ebe63..5adf6eaef2 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php @@ -45,8 +45,8 @@ class FunctionsCustomServerTest extends Scope $this->assertNotEmpty($response1['body']['$id']); $this->assertEquals('Test', $response1['body']['name']); $this->assertEquals('php-8.0', $response1['body']['runtime']); - $this->assertEquals(true, DateTime::isValid($response1['body']['$createdAt'])); - $this->assertEquals(true, DateTime::isValid($response1['body']['$updatedAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response1['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response1['body']['$updatedAt'])); $this->assertEquals('', $response1['body']['deployment']); $this->assertEquals([ 'users.*.create', @@ -328,8 +328,8 @@ class FunctionsCustomServerTest extends Scope $this->assertEquals(200, $response1['headers']['status-code']); $this->assertNotEmpty($response1['body']['$id']); $this->assertEquals('Test1', $response1['body']['name']); - $this->assertEquals(true, DateTime::isValid($response1['body']['$createdAt'])); - $this->assertEquals(true, DateTime::isValid($response1['body']['$updatedAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response1['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response1['body']['$updatedAt'])); $this->assertEquals('', $response1['body']['deployment']); $this->assertEquals([ 'users.*.update.name', @@ -369,7 +369,7 @@ class FunctionsCustomServerTest extends Scope $this->assertEquals(202, $deployment['headers']['status-code']); $this->assertNotEmpty($deployment['body']['$id']); - $this->assertEquals(true, DateTime::isValid($deployment['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($deployment['body']['$createdAt'])); $this->assertEquals('index.php', $deployment['body']['entrypoint']); // Wait for deployment to build. @@ -418,7 +418,7 @@ class FunctionsCustomServerTest extends Scope $this->assertEquals(202, $largeTag['headers']['status-code']); $this->assertNotEmpty($largeTag['body']['$id']); - $this->assertEquals(true, DateTime::isValid($largeTag['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($largeTag['body']['$createdAt'])); $this->assertEquals('index.php', $largeTag['body']['entrypoint']); $this->assertGreaterThan(10000, $largeTag['body']['size']); @@ -440,8 +440,8 @@ class FunctionsCustomServerTest extends Scope $this->assertEquals(200, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['$createdAt'])); - $this->assertEquals(true, DateTime::isValid($response['body']['$updatedAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$updatedAt'])); $this->assertEquals($data['deploymentId'], $response['body']['deployment']); /** @@ -606,7 +606,7 @@ class FunctionsCustomServerTest extends Scope $this->assertEquals(202, $execution['headers']['status-code']); $this->assertNotEmpty($execution['body']['$id']); $this->assertNotEmpty($execution['body']['functionId']); - $this->assertEquals(true, DateTime::isValid($execution['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($execution['body']['$createdAt'])); $this->assertEquals($data['functionId'], $execution['body']['functionId']); $this->assertEquals('waiting', $execution['body']['status']); $this->assertEquals(0, $execution['body']['statusCode']); @@ -623,7 +623,7 @@ class FunctionsCustomServerTest extends Scope $this->assertNotEmpty($execution['body']['$id']); $this->assertNotEmpty($execution['body']['functionId']); - $this->assertEquals(true, DateTime::isValid($execution['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($execution['body']['$createdAt'])); $this->assertEquals($data['functionId'], $execution['body']['functionId']); $this->assertEquals('completed', $execution['body']['status']); $this->assertEquals(200, $execution['body']['statusCode']); diff --git a/tests/e2e/Services/Storage/StorageBase.php b/tests/e2e/Services/Storage/StorageBase.php index 359989e114..e30cf512b8 100644 --- a/tests/e2e/Services/Storage/StorageBase.php +++ b/tests/e2e/Services/Storage/StorageBase.php @@ -52,7 +52,7 @@ trait StorageBase ]); $this->assertEquals(201, $file['headers']['status-code']); $this->assertNotEmpty($file['body']['$id']); - $this->assertEquals(true, DateTime::isValid($file['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('logo.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -120,7 +120,7 @@ trait StorageBase $this->assertEquals(201, $largeFile['headers']['status-code']); $this->assertNotEmpty($largeFile['body']['$id']); - $this->assertEquals(true, DateTime::isValid($largeFile['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($largeFile['body']['$createdAt'])); $this->assertEquals('large-file.mp4', $largeFile['body']['name']); $this->assertEquals('video/mp4', $largeFile['body']['mimeType']); $this->assertEquals($totalSize, $largeFile['body']['sizeOriginal']); @@ -283,7 +283,7 @@ trait StorageBase ]); $this->assertEquals(201, $file['headers']['status-code']); $this->assertNotEmpty($file['body']['$id']); - $this->assertEquals(true, DateTime::isValid($file['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('logo.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -373,7 +373,7 @@ trait StorageBase $this->assertEquals(200, $file1['headers']['status-code']); $this->assertNotEmpty($file1['body']['$id']); - $this->assertEquals(true, DateTime::isValid($file1['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($file1['body']['$createdAt'])); $this->assertEquals('logo.png', $file1['body']['name']); $this->assertEquals('image/png', $file1['body']['mimeType']); $this->assertEquals(47218, $file1['body']['sizeOriginal']); @@ -712,7 +712,7 @@ trait StorageBase $this->assertEquals(200, $file['headers']['status-code']); $this->assertNotEmpty($file['body']['$id']); - $this->assertEquals(true, DateTime::isValid($file['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('logo.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); diff --git a/tests/e2e/Services/Storage/StorageCustomClientTest.php b/tests/e2e/Services/Storage/StorageCustomClientTest.php index 4a697d584a..8b22ab3181 100644 --- a/tests/e2e/Services/Storage/StorageCustomClientTest.php +++ b/tests/e2e/Services/Storage/StorageCustomClientTest.php @@ -63,7 +63,7 @@ class StorageCustomClientTest extends Scope $fileId = $file['body']['$id']; $this->assertEquals($file['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, DateTime::isValid($file['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('permissions.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -159,7 +159,7 @@ class StorageCustomClientTest extends Scope $fileId = $file['body']['$id']; $this->assertEquals($file['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, DateTime::isValid($file['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('permissions.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -245,7 +245,7 @@ class StorageCustomClientTest extends Scope $fileId = $file['body']['$id']; $this->assertEquals($file['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, DateTime::isValid($file['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('permissions.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -370,7 +370,7 @@ class StorageCustomClientTest extends Scope $fileId = $file['body']['$id']; $this->assertEquals($file['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, DateTime::isValid($file['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('permissions.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -548,7 +548,7 @@ class StorageCustomClientTest extends Scope $fileId = $file['body']['$id']; $this->assertEquals($file['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, DateTime::isValid($file['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('permissions.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -710,7 +710,7 @@ class StorageCustomClientTest extends Scope $fileId = $file1['body']['$id']; $this->assertEquals($file1['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, DateTime::isValid($file1['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($file1['body']['$createdAt'])); $this->assertEquals('permissions.png', $file1['body']['name']); $this->assertEquals('image/png', $file1['body']['mimeType']); $this->assertEquals(47218, $file1['body']['sizeOriginal']); @@ -799,7 +799,7 @@ class StorageCustomClientTest extends Scope $fileId = $file1['body']['$id']; $this->assertEquals($file1['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, DateTime::isValid($file1['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($file1['body']['$createdAt'])); $this->assertEquals('permissions.png', $file1['body']['name']); $this->assertEquals('image/png', $file1['body']['mimeType']); $this->assertEquals(47218, $file1['body']['sizeOriginal']); @@ -888,7 +888,7 @@ class StorageCustomClientTest extends Scope $fileId = $file1['body']['$id']; $this->assertEquals($file1['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, DateTime::isValid($file1['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($file1['body']['$createdAt'])); $this->assertEquals('permissions.png', $file1['body']['name']); $this->assertEquals('image/png', $file1['body']['mimeType']); $this->assertEquals(47218, $file1['body']['sizeOriginal']); @@ -1027,7 +1027,7 @@ class StorageCustomClientTest extends Scope $fileId = $file['body']['$id']; $this->assertEquals($file['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, DateTime::isValid($file['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('permissions.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -1262,7 +1262,7 @@ class StorageCustomClientTest extends Scope $this->assertContains(Permission::read(Role::user($this->getUser()['$id'])), $file['body']['$permissions']); $this->assertContains(Permission::update(Role::user($this->getUser()['$id'])), $file['body']['$permissions']); $this->assertContains(Permission::delete(Role::user($this->getUser()['$id'])), $file['body']['$permissions']); - $this->assertEquals(true, DateTime::isValid($file['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('permissions.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); diff --git a/tests/e2e/Services/Storage/StorageCustomServerTest.php b/tests/e2e/Services/Storage/StorageCustomServerTest.php index 2395e1d8fc..d4b2f7db49 100644 --- a/tests/e2e/Services/Storage/StorageCustomServerTest.php +++ b/tests/e2e/Services/Storage/StorageCustomServerTest.php @@ -30,7 +30,7 @@ class StorageCustomServerTest extends Scope ]); $this->assertEquals(201, $bucket['headers']['status-code']); $this->assertNotEmpty($bucket['body']['$id']); - $this->assertEquals(true, DateTime::isValid($bucket['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($bucket['body']['$createdAt'])); $this->assertIsArray($bucket['body']['$permissions']); $this->assertIsArray($bucket['body']['allowedFileExtensions']); $this->assertEquals('Test Bucket', $bucket['body']['name']); @@ -228,7 +228,7 @@ class StorageCustomServerTest extends Scope ]); $this->assertEquals(200, $bucket['headers']['status-code']); $this->assertNotEmpty($bucket['body']['$id']); - $this->assertEquals(true, DateTime::isValid($bucket['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($bucket['body']['$createdAt'])); $this->assertIsArray($bucket['body']['$permissions']); $this->assertIsArray($bucket['body']['allowedFileExtensions']); $this->assertEquals('Test Bucket Updated', $bucket['body']['name']); diff --git a/tests/e2e/Services/Teams/TeamsBase.php b/tests/e2e/Services/Teams/TeamsBase.php index 3bad31e35c..bd65971b82 100644 --- a/tests/e2e/Services/Teams/TeamsBase.php +++ b/tests/e2e/Services/Teams/TeamsBase.php @@ -28,7 +28,7 @@ trait TeamsBase $this->assertEquals('Arsenal', $response1['body']['name']); $this->assertGreaterThan(-1, $response1['body']['total']); $this->assertIsInt($response1['body']['total']); - $this->assertEquals(true, DateTime::isValid($response1['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response1['body']['$createdAt'])); $teamUid = $response1['body']['$id']; $teamName = $response1['body']['name']; @@ -48,7 +48,7 @@ trait TeamsBase $this->assertEquals('Manchester United', $response2['body']['name']); $this->assertGreaterThan(-1, $response2['body']['total']); $this->assertIsInt($response2['body']['total']); - $this->assertEquals(true, DateTime::isValid($response2['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response2['body']['$createdAt'])); $response3 = $this->client->call(Client::METHOD_POST, '/teams', array_merge([ 'content-type' => 'application/json', @@ -63,7 +63,7 @@ trait TeamsBase $this->assertEquals('Newcastle', $response3['body']['name']); $this->assertGreaterThan(-1, $response3['body']['total']); $this->assertIsInt($response3['body']['total']); - $this->assertEquals(true, DateTime::isValid($response3['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response3['body']['$createdAt'])); /** * Test for FAILURE */ @@ -98,7 +98,7 @@ trait TeamsBase $this->assertEquals('Arsenal', $response['body']['name']); $this->assertGreaterThan(-1, $response['body']['total']); $this->assertIsInt($response['body']['total']); - $this->assertEquals(true, DateTime::isValid($response['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); /** * Test for FAILURE @@ -275,7 +275,7 @@ trait TeamsBase $this->assertEquals('Demo', $response['body']['name']); $this->assertGreaterThan(-1, $response['body']['total']); $this->assertIsInt($response['body']['total']); - $this->assertEquals(true, DateTime::isValid($response['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); $response = $this->client->call(Client::METHOD_PUT, '/teams/' . $response['body']['$id'], array_merge([ 'content-type' => 'application/json', @@ -290,7 +290,7 @@ trait TeamsBase $this->assertEquals('Demo New', $response['body']['name']); $this->assertGreaterThan(-1, $response['body']['total']); $this->assertIsInt($response['body']['total']); - $this->assertEquals(true, DateTime::isValid($response['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); /** * Test for FAILURE @@ -326,7 +326,7 @@ trait TeamsBase $this->assertEquals('Demo', $response['body']['name']); $this->assertGreaterThan(-1, $response['body']['total']); $this->assertIsInt($response['body']['total']); - $this->assertEquals(true, DateTime::isValid($response['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); $response = $this->client->call(Client::METHOD_DELETE, '/teams/' . $teamUid, array_merge([ 'content-type' => 'application/json', diff --git a/tests/e2e/Services/Teams/TeamsBaseClient.php b/tests/e2e/Services/Teams/TeamsBaseClient.php index 0eb578e325..aaa11d2f9b 100644 --- a/tests/e2e/Services/Teams/TeamsBaseClient.php +++ b/tests/e2e/Services/Teams/TeamsBaseClient.php @@ -150,7 +150,7 @@ trait TeamsBaseClient $this->assertNotEmpty($response['body']['teamId']); $this->assertNotEmpty($response['body']['teamName']); $this->assertCount(2, $response['body']['roles']); - $this->assertEquals(false, DateTime::isValid($response['body']['joined'])); // is null in DB + $this->assertEquals(false, self::$dateValidator->isValid($response['body']['joined'])); // is null in DB $this->assertEquals(false, $response['body']['confirm']); /** @@ -203,7 +203,7 @@ trait TeamsBaseClient $this->assertNotEmpty($response['body']['teamId']); $this->assertNotEmpty($response['body']['teamName']); $this->assertCount(2, $response['body']['roles']); - $this->assertEquals(false, DateTime::isValid($response['body']['joined'])); // is null in DB + $this->assertEquals(false, self::$dateValidator->isValid($response['body']['joined'])); // is null in DB $this->assertEquals(false, $response['body']['confirm']); $lastEmail = $this->getLastEmail(); @@ -337,7 +337,7 @@ trait TeamsBaseClient $this->assertNotEmpty($response['body']['userId']); $this->assertNotEmpty($response['body']['teamId']); $this->assertCount(2, $response['body']['roles']); - $this->assertEquals(true, DateTime::isValid($response['body']['joined'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['joined'])); $this->assertEquals(true, $response['body']['confirm']); $session = $this->client->parseCookie((string)$response['headers']['set-cookie'])['a_session_' . $this->getProject()['$id']]; $data['session'] = $session; @@ -369,7 +369,7 @@ trait TeamsBaseClient $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $this->assertEquals($response['body']['name'], $name); @@ -403,7 +403,7 @@ trait TeamsBaseClient $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, DateTime::isValid($response['body']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $this->assertEquals($response['body']['name'], $name); diff --git a/tests/e2e/Services/Teams/TeamsBaseServer.php b/tests/e2e/Services/Teams/TeamsBaseServer.php index df508e5e37..db5ca697f9 100644 --- a/tests/e2e/Services/Teams/TeamsBaseServer.php +++ b/tests/e2e/Services/Teams/TeamsBaseServer.php @@ -57,7 +57,7 @@ trait TeamsBaseServer $this->assertNotEmpty($response['body']['teamId']); $this->assertNotEmpty($response['body']['teamName']); $this->assertCount(2, $response['body']['roles']); - $this->assertEquals(true, DateTime::isValid($response['body']['joined'])); // is null in DB + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['joined'])); // is null in DB $this->assertEquals(true, $response['body']['confirm']); /** @@ -108,7 +108,7 @@ trait TeamsBaseServer $this->assertEquals($email, $response['body']['userEmail']); $this->assertNotEmpty($response['body']['teamId']); $this->assertCount(2, $response['body']['roles']); - $this->assertEquals(true, DateTime::isValid($response['body']['joined'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['joined'])); $this->assertEquals(true, $response['body']['confirm']); $userUid = $response['body']['userId']; @@ -252,7 +252,7 @@ trait TeamsBaseServer $this->assertEquals('Arsenal', $response['body']['name']); $this->assertEquals(1, $response['body']['total']); $this->assertIsInt($response['body']['total']); - $this->assertEquals(true, DateTime::isValid($response['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); /** Delete User */ $user = $this->client->call(Client::METHOD_DELETE, '/users/' . $userUid, array_merge([ @@ -277,6 +277,6 @@ trait TeamsBaseServer $this->assertEquals('Arsenal', $response['body']['name']); $this->assertEquals(0, $response['body']['total']); $this->assertIsInt($response['body']['total']); - $this->assertEquals(true, DateTime::isValid($response['body']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); } } diff --git a/tests/e2e/Services/Webhooks/WebhooksBase.php b/tests/e2e/Services/Webhooks/WebhooksBase.php index d3d700a222..33fd9107f4 100644 --- a/tests/e2e/Services/Webhooks/WebhooksBase.php +++ b/tests/e2e/Services/Webhooks/WebhooksBase.php @@ -529,7 +529,7 @@ trait WebhooksBase $this->assertNotEmpty($webhook['data']['$id']); $this->assertIsArray($webhook['data']['$permissions']); $this->assertEquals($webhook['data']['name'], 'logo.png'); - $this->assertEquals(true, DateTime::isValid($webhook['data']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['$createdAt'])); $this->assertNotEmpty($webhook['data']['signature']); $this->assertEquals($webhook['data']['mimeType'], 'image/png'); $this->assertEquals($webhook['data']['sizeOriginal'], 47218); @@ -587,7 +587,7 @@ trait WebhooksBase $this->assertNotEmpty($webhook['data']['$id']); $this->assertIsArray($webhook['data']['$permissions']); $this->assertEquals($webhook['data']['name'], 'logo.png'); - $this->assertEquals(true, DateTime::isValid($webhook['data']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['$createdAt'])); $this->assertNotEmpty($webhook['data']['signature']); $this->assertEquals($webhook['data']['mimeType'], 'image/png'); $this->assertEquals($webhook['data']['sizeOriginal'], 47218); @@ -637,7 +637,7 @@ trait WebhooksBase $this->assertNotEmpty($webhook['data']['$id']); $this->assertIsArray($webhook['data']['$permissions']); $this->assertEquals($webhook['data']['name'], 'logo.png'); - $this->assertEquals(true, DateTime::isValid($webhook['data']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['$createdAt'])); $this->assertNotEmpty($webhook['data']['signature']); $this->assertEquals($webhook['data']['mimeType'], 'image/png'); $this->assertEquals($webhook['data']['sizeOriginal'], 47218); @@ -719,7 +719,7 @@ trait WebhooksBase $this->assertEquals('Arsenal', $webhook['data']['name']); $this->assertGreaterThan(-1, $webhook['data']['total']); $this->assertIsInt($webhook['data']['total']); - $this->assertEquals(true, DateTime::isValid($webhook['data']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['$createdAt'])); /** * Test for FAILURE @@ -764,7 +764,7 @@ trait WebhooksBase $this->assertEquals('Demo New', $webhook['data']['name']); $this->assertGreaterThan(-1, $webhook['data']['total']); $this->assertIsInt($webhook['data']['total']); - $this->assertEquals(true, DateTime::isValid($webhook['data']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['$createdAt'])); /** * Test for FAILURE @@ -813,7 +813,7 @@ trait WebhooksBase $this->assertEquals('Chelsea', $webhook['data']['name']); $this->assertGreaterThan(-1, $webhook['data']['total']); $this->assertIsInt($webhook['data']['total']); - $this->assertEquals(true, DateTime::isValid($webhook['data']['$createdAt'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['$createdAt'])); /** * Test for FAILURE @@ -874,7 +874,7 @@ trait WebhooksBase $this->assertNotEmpty($webhook['data']['userId']); $this->assertNotEmpty($webhook['data']['teamId']); $this->assertCount(2, $webhook['data']['roles']); - $this->assertEquals(true, DateTime::isValid($webhook['data']['invited'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['invited'])); $this->assertEquals(('server' === $this->getSide()), $webhook['data']['confirm']); /** @@ -946,7 +946,7 @@ trait WebhooksBase $this->assertNotEmpty($webhook['data']['userId']); $this->assertNotEmpty($webhook['data']['teamId']); $this->assertCount(2, $webhook['data']['roles']); - $this->assertEquals(true, DateTime::isValid($webhook['data']['invited'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['invited'])); $this->assertEquals(('server' === $this->getSide()), $webhook['data']['confirm']); } } diff --git a/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php b/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php index 1a49b4b3f0..262023f5c1 100644 --- a/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php +++ b/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php @@ -60,7 +60,7 @@ class WebhooksCustomClientTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id']), true); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals($webhook['data']['name'], $name); - $this->assertEquals(true, DateTime::isValid($webhook['data']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['registration'])); $this->assertEquals($webhook['data']['status'], true); $this->assertEquals($webhook['data']['email'], $email); $this->assertEquals($webhook['data']['emailVerification'], false); @@ -136,7 +136,7 @@ class WebhooksCustomClientTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals($webhook['data']['name'], $name); - $this->assertEquals(true, DateTime::isValid($webhook['data']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['registration'])); $this->assertEquals($webhook['data']['status'], false); $this->assertEquals($webhook['data']['email'], $email); $this->assertEquals($webhook['data']['emailVerification'], false); @@ -196,7 +196,7 @@ class WebhooksCustomClientTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id']), true); $this->assertNotEmpty($webhook['data']['$id']); $this->assertNotEmpty($webhook['data']['userId']); - $this->assertEquals(true, DateTime::isValid($webhook['data']['expire'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['expire'])); $this->assertEquals($webhook['data']['ip'], '127.0.0.1'); $this->assertNotEmpty($webhook['data']['osCode']); $this->assertIsString($webhook['data']['osCode']); @@ -371,7 +371,7 @@ class WebhooksCustomClientTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); $this->assertNotEmpty($webhook['data']['$id']); $this->assertNotEmpty($webhook['data']['userId']); - $this->assertEquals(true, DateTime::isValid($webhook['data']['expire'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['expire'])); $this->assertEquals($webhook['data']['ip'], '127.0.0.1'); $this->assertNotEmpty($webhook['data']['osCode']); $this->assertIsString($webhook['data']['osCode']); @@ -683,7 +683,7 @@ class WebhooksCustomClientTest extends Scope $this->assertNotEmpty($webhook['data']['$id']); $this->assertNotEmpty($webhook['data']['userId']); $this->assertNotEmpty($webhook['data']['secret']); - $this->assertEquals(true, DateTime::isValid($webhook['data']['expire'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['expire'])); $data['secret'] = $webhook['data']['secret']; @@ -743,7 +743,7 @@ class WebhooksCustomClientTest extends Scope $this->assertNotEmpty($webhook['data']['$id']); $this->assertNotEmpty($webhook['data']['userId']); $this->assertNotEmpty($webhook['data']['secret']); - $this->assertEquals(true, DateTime::isValid($webhook['data']['expire'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['expire'])); $data['secret'] = $webhook['data']['secret']; @@ -799,7 +799,7 @@ class WebhooksCustomClientTest extends Scope $this->assertNotEmpty($webhook['data']['$id']); $this->assertNotEmpty($webhook['data']['userId']); $this->assertNotEmpty($webhook['data']['secret']); - $this->assertEquals(true, DateTime::isValid($webhook['data']['expire'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['expire'])); $data['secret'] = $webhook['data']['secret']; @@ -857,7 +857,7 @@ class WebhooksCustomClientTest extends Scope $this->assertNotEmpty($webhook['data']['$id']); $this->assertNotEmpty($webhook['data']['userId']); $this->assertNotEmpty($webhook['data']['secret']); - $this->assertEquals(true, DateTime::isValid($webhook['data']['expire'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['expire'])); $data['secret'] = $webhook['data']['secret']; @@ -920,7 +920,7 @@ class WebhooksCustomClientTest extends Scope $this->assertNotEmpty($webhook['data']['userId']); $this->assertNotEmpty($webhook['data']['teamId']); $this->assertCount(2, $webhook['data']['roles']); - $this->assertEquals(true, DateTime::isValid($webhook['data']['joined'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['joined'])); $this->assertEquals(true, $webhook['data']['confirm']); /** diff --git a/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php b/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php index 51f5ef2532..869bc156d2 100644 --- a/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php +++ b/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php @@ -245,7 +245,7 @@ class WebhooksCustomServerTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals($webhook['data']['name'], $name); - $this->assertEquals(true, DateTime::isValid($webhook['data']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['registration'])); $this->assertEquals($webhook['data']['status'], true); $this->assertEquals($webhook['data']['email'], $email); $this->assertEquals($webhook['data']['emailVerification'], false); @@ -336,7 +336,7 @@ class WebhooksCustomServerTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals($webhook['data']['name'], $data['name']); - $this->assertEquals(true, DateTime::isValid($webhook['data']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['registration'])); $this->assertEquals($webhook['data']['status'], false); $this->assertEquals($webhook['data']['email'], $data['email']); $this->assertEquals($webhook['data']['emailVerification'], false); @@ -378,7 +378,7 @@ class WebhooksCustomServerTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals($webhook['data']['name'], $data['name']); - $this->assertEquals(true, DateTime::isValid($webhook['data']['registration'])); + $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['registration'])); $this->assertEquals($webhook['data']['status'], false); $this->assertEquals($webhook['data']['email'], $data['email']); $this->assertEquals($webhook['data']['emailVerification'], false); From 91db596b420507a0890fd0b0170e10080180f5cd Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 19 Dec 2022 13:21:09 +0200 Subject: [PATCH 25/94] remove static $dateValidator --- composer.lock | 21 +++++----- tests/e2e/General/UsageTest.php | 8 ++-- tests/e2e/Scopes/Scope.php | 2 - tests/e2e/Services/Account/AccountBase.php | 38 ++++++++++++------- .../Account/AccountCustomClientTest.php | 19 +++++++--- .../e2e/Services/Databases/DatabasesBase.php | 6 ++- .../Functions/FunctionsCustomServerTest.php | 27 ++++++++----- tests/e2e/Services/Storage/StorageBase.php | 15 +++++--- .../Storage/StorageCustomClientTest.php | 31 ++++++++++----- .../Storage/StorageCustomServerTest.php | 7 +++- tests/e2e/Services/Teams/TeamsBase.php | 19 ++++++---- tests/e2e/Services/Teams/TeamsBaseClient.php | 14 ++++--- tests/e2e/Services/Teams/TeamsBaseServer.php | 12 ++++-- tests/e2e/Services/Webhooks/WebhooksBase.php | 25 ++++++++---- .../Webhooks/WebhooksCustomClientTest.php | 28 +++++++++----- .../Webhooks/WebhooksCustomServerTest.php | 10 +++-- 16 files changed, 183 insertions(+), 99 deletions(-) diff --git a/composer.lock b/composer.lock index 283eed1c21..ce6b1fb837 100644 --- a/composer.lock +++ b/composer.lock @@ -874,6 +874,7 @@ "issues": "https://github.com/influxdata/influxdb-php/issues", "source": "https://github.com/influxdata/influxdb-php/tree/1.15.2" }, + "abandoned": true, "time": "2020-12-26T17:45:17+00:00" }, { @@ -2120,12 +2121,12 @@ "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "703f5daa6341e3c7bf97e3ccd5ebae75198c5caf" + "reference": "08ee675eace0a4ab7ae779fec842a436e9cad3db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/703f5daa6341e3c7bf97e3ccd5ebae75198c5caf", - "reference": "703f5daa6341e3c7bf97e3ccd5ebae75198c5caf", + "url": "https://api.github.com/repos/utopia-php/database/zipball/08ee675eace0a4ab7ae779fec842a436e9cad3db", + "reference": "08ee675eace0a4ab7ae779fec842a436e9cad3db", "shasum": "" }, "require": { @@ -2167,7 +2168,7 @@ "issues": "https://github.com/utopia-php/database/issues", "source": "https://github.com/utopia-php/database/tree/feat-technical-debt" }, - "time": "2022-12-13T15:36:09+00:00" + "time": "2022-12-19T07:31:10+00:00" }, { "name": "utopia-php/domains", @@ -3700,16 +3701,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.21", + "version": "9.2.22", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "3f893e19712bb0c8bc86665d1562e9fd509c4ef0" + "reference": "e4bf60d2220b4baaa0572986b5d69870226b06df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/3f893e19712bb0c8bc86665d1562e9fd509c4ef0", - "reference": "3f893e19712bb0c8bc86665d1562e9fd509c4ef0", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e4bf60d2220b4baaa0572986b5d69870226b06df", + "reference": "e4bf60d2220b4baaa0572986b5d69870226b06df", "shasum": "" }, "require": { @@ -3765,7 +3766,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.21" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.22" }, "funding": [ { @@ -3773,7 +3774,7 @@ "type": "github" } ], - "time": "2022-12-14T13:26:54+00:00" + "time": "2022-12-18T16:40:55+00:00" }, { "name": "phpunit/php-file-iterator", diff --git a/tests/e2e/General/UsageTest.php b/tests/e2e/General/UsageTest.php index 6483257ae2..afa8433cbb 100644 --- a/tests/e2e/General/UsageTest.php +++ b/tests/e2e/General/UsageTest.php @@ -11,6 +11,7 @@ use CURLFile; use Tests\E2E\Services\Functions\FunctionsBase; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; +use Utopia\Database\Validator\DatetimeValidator; class UsageTest extends Scope { @@ -600,6 +601,7 @@ class UsageTest extends Scope /** @depends testDatabaseStats */ public function testPrepareFunctionsStats(array $data): array { + $dateValidator = new DatetimeValidator(); $headers = $data['headers']; $functionId = ''; $executionTime = 0; @@ -641,7 +643,7 @@ class UsageTest extends Scope $this->assertEquals(202, $deployment['headers']['status-code']); $this->assertNotEmpty($deployment['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($deployment['body']['$createdAt'])); + $this->assertEquals(true, $dateValidator->isValid($deployment['body']['$createdAt'])); $this->assertEquals('index.php', $deployment['body']['entrypoint']); // Wait for deployment to build. @@ -651,8 +653,8 @@ class UsageTest extends Scope $this->assertEquals(200, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$updatedAt'])); + $this->assertEquals(true, $dateValidator->isValid($response['body']['$createdAt'])); + $this->assertEquals(true, $dateValidator->isValid($response['body']['$updatedAt'])); $this->assertEquals($deploymentId, $response['body']['deployment']); $execution = $this->client->call(Client::METHOD_POST, '/functions/' . $functionId . '/executions', $headers, [ diff --git a/tests/e2e/Scopes/Scope.php b/tests/e2e/Scopes/Scope.php index bb27adb8e0..c5079962a0 100644 --- a/tests/e2e/Scopes/Scope.php +++ b/tests/e2e/Scopes/Scope.php @@ -29,8 +29,6 @@ abstract class Scope extends TestCase $this->client ->setEndpoint($this->endpoint) ; - - self::$dateValidator = new DatetimeValidator(); } protected function tearDown(): void diff --git a/tests/e2e/Services/Account/AccountBase.php b/tests/e2e/Services/Account/AccountBase.php index 0bd4e58e0d..5b5c1ccc12 100644 --- a/tests/e2e/Services/Account/AccountBase.php +++ b/tests/e2e/Services/Account/AccountBase.php @@ -6,6 +6,7 @@ use Appwrite\Tests\Retry; use Tests\E2E\Client; use Utopia\Database\Helpers\ID; use Utopia\Database\DateTime; +use Utopia\Database\Validator\DatetimeValidator; trait AccountBase { @@ -34,7 +35,8 @@ trait AccountBase $this->assertEquals($response['headers']['status-code'], 201); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $this->assertEquals($response['body']['name'], $name); @@ -198,7 +200,8 @@ trait AccountBase $this->assertEquals($response['headers']['status-code'], 200); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $this->assertEquals($response['body']['name'], $name); @@ -343,7 +346,8 @@ trait AccountBase $this->assertIsNumeric($response['body']['total']); $this->assertContains($response['body']['logs'][1]['event'], ["session.create"]); $this->assertEquals($response['body']['logs'][1]['ip'], filter_var($response['body']['logs'][1]['ip'], FILTER_VALIDATE_IP)); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['logs'][1]['time'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['logs'][1]['time'])); $this->assertEquals('Windows', $response['body']['logs'][1]['osName']); $this->assertEquals('WIN', $response['body']['logs'][1]['osCode']); @@ -365,7 +369,7 @@ trait AccountBase $this->assertContains($response['body']['logs'][2]['event'], ["user.create"]); $this->assertEquals($response['body']['logs'][2]['ip'], filter_var($response['body']['logs'][2]['ip'], FILTER_VALIDATE_IP)); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['logs'][2]['time'])); + $this->assertEquals(true, $dateValidator->isValid($response['body']['logs'][2]['time'])); $this->assertEquals('Windows', $response['body']['logs'][2]['osName']); $this->assertEquals('WIN', $response['body']['logs'][2]['osCode']); @@ -476,7 +480,8 @@ trait AccountBase $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $this->assertEquals($response['body']['name'], $newName); @@ -543,7 +548,8 @@ trait AccountBase $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $response = $this->client->call(Client::METHOD_POST, '/account/sessions/email', array_merge([ @@ -633,7 +639,8 @@ trait AccountBase $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $newEmail); /** @@ -675,7 +682,7 @@ trait AccountBase $this->assertEquals($response['headers']['status-code'], 201); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); + $this->assertEquals(true, $dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $data['email']); $this->assertEquals($response['body']['name'], $data['name']); @@ -817,7 +824,8 @@ trait AccountBase $this->assertEquals(201, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEmpty($response['body']['secret']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['expire'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['expire'])); $lastEmail = $this->getLastEmail(); @@ -1119,7 +1127,8 @@ trait AccountBase $this->assertEquals(201, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEmpty($response['body']['secret']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['expire'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['expire'])); $lastEmail = $this->getLastEmail(); @@ -1273,7 +1282,8 @@ trait AccountBase $this->assertEquals(201, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEmpty($response['body']['secret']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['expire'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['expire'])); $userId = $response['body']['userId']; @@ -1379,7 +1389,8 @@ trait AccountBase $this->assertEquals($response['headers']['status-code'], 200); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $this->assertTrue($response['body']['emailVerification']); @@ -1439,7 +1450,8 @@ trait AccountBase $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $response = $this->client->call(Client::METHOD_POST, '/account/sessions/email', array_merge([ diff --git a/tests/e2e/Services/Account/AccountCustomClientTest.php b/tests/e2e/Services/Account/AccountCustomClientTest.php index d5a65edc7d..b89e0a0746 100644 --- a/tests/e2e/Services/Account/AccountCustomClientTest.php +++ b/tests/e2e/Services/Account/AccountCustomClientTest.php @@ -10,6 +10,7 @@ use Tests\E2E\Scopes\SideClient; use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; +use Utopia\Database\Validator\DatetimeValidator; use function sleep; class AccountCustomClientTest extends Scope @@ -448,7 +449,8 @@ class AccountCustomClientTest extends Scope $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $response = $this->client->call(Client::METHOD_POST, '/account/sessions/email', array_merge([ @@ -699,7 +701,8 @@ class AccountCustomClientTest extends Scope $this->assertEquals(201, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEmpty($response['body']['secret']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['expire'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['expire'])); $userId = $response['body']['userId']; @@ -799,7 +802,8 @@ class AccountCustomClientTest extends Scope $this->assertEquals($response['headers']['status-code'], 200); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['phone'], $number); $this->assertTrue($response['body']['phoneVerification']); @@ -850,7 +854,8 @@ class AccountCustomClientTest extends Scope $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $response = $this->client->call(Client::METHOD_POST, '/account/sessions/email', array_merge([ @@ -892,7 +897,8 @@ class AccountCustomClientTest extends Scope $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['phone'], $newPhone); /** @@ -941,7 +947,8 @@ class AccountCustomClientTest extends Scope $this->assertEquals(201, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); $this->assertEmpty($response['body']['secret']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['expire'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['expire'])); \sleep(2); diff --git a/tests/e2e/Services/Databases/DatabasesBase.php b/tests/e2e/Services/Databases/DatabasesBase.php index 3209ff46b0..13a95c9f09 100644 --- a/tests/e2e/Services/Databases/DatabasesBase.php +++ b/tests/e2e/Services/Databases/DatabasesBase.php @@ -6,6 +6,7 @@ use Tests\E2E\Client; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; +use Utopia\Database\Validator\DatetimeValidator; trait DatabasesBase { @@ -1530,8 +1531,9 @@ trait DatabasesBase $this->assertEquals($databaseId, $document['body']['$databaseId']); $this->assertEquals($document['body']['title'], 'Thor: Ragnaroc'); $this->assertEquals($document['body']['releaseYear'], 2017); - $this->assertEquals(true, self::$dateValidator->isValid($document['body']['$createdAt'])); - $this->assertEquals(true, self::$dateValidator->isValid($document['body']['birthDay'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($document['body']['$createdAt'])); + $this->assertEquals(true, $dateValidator->isValid($document['body']['birthDay'])); $this->assertContains(Permission::read(Role::user($this->getUser()['$id'])), $document['body']['$permissions']); $this->assertContains(Permission::update(Role::user($this->getUser()['$id'])), $document['body']['$permissions']); $this->assertContains(Permission::delete(Role::user($this->getUser()['$id'])), $document['body']['$permissions']); diff --git a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php index 5adf6eaef2..0d2c6298da 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php @@ -12,6 +12,7 @@ use Utopia\CLI\Console; use Utopia\Database\Database; use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; +use Utopia\Database\Validator\DatetimeValidator; class FunctionsCustomServerTest extends Scope { @@ -45,8 +46,9 @@ class FunctionsCustomServerTest extends Scope $this->assertNotEmpty($response1['body']['$id']); $this->assertEquals('Test', $response1['body']['name']); $this->assertEquals('php-8.0', $response1['body']['runtime']); - $this->assertEquals(true, self::$dateValidator->isValid($response1['body']['$createdAt'])); - $this->assertEquals(true, self::$dateValidator->isValid($response1['body']['$updatedAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response1['body']['$createdAt'])); + $this->assertEquals(true, $dateValidator->isValid($response1['body']['$updatedAt'])); $this->assertEquals('', $response1['body']['deployment']); $this->assertEquals([ 'users.*.create', @@ -328,8 +330,9 @@ class FunctionsCustomServerTest extends Scope $this->assertEquals(200, $response1['headers']['status-code']); $this->assertNotEmpty($response1['body']['$id']); $this->assertEquals('Test1', $response1['body']['name']); - $this->assertEquals(true, self::$dateValidator->isValid($response1['body']['$createdAt'])); - $this->assertEquals(true, self::$dateValidator->isValid($response1['body']['$updatedAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response1['body']['$createdAt'])); + $this->assertEquals(true, $dateValidator->isValid($response1['body']['$updatedAt'])); $this->assertEquals('', $response1['body']['deployment']); $this->assertEquals([ 'users.*.update.name', @@ -369,7 +372,8 @@ class FunctionsCustomServerTest extends Scope $this->assertEquals(202, $deployment['headers']['status-code']); $this->assertNotEmpty($deployment['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($deployment['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($deployment['body']['$createdAt'])); $this->assertEquals('index.php', $deployment['body']['entrypoint']); // Wait for deployment to build. @@ -418,7 +422,8 @@ class FunctionsCustomServerTest extends Scope $this->assertEquals(202, $largeTag['headers']['status-code']); $this->assertNotEmpty($largeTag['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($largeTag['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($largeTag['body']['$createdAt'])); $this->assertEquals('index.php', $largeTag['body']['entrypoint']); $this->assertGreaterThan(10000, $largeTag['body']['size']); @@ -440,8 +445,9 @@ class FunctionsCustomServerTest extends Scope $this->assertEquals(200, $response['headers']['status-code']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$updatedAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['$createdAt'])); + $this->assertEquals(true, $dateValidator->isValid($response['body']['$updatedAt'])); $this->assertEquals($data['deploymentId'], $response['body']['deployment']); /** @@ -606,7 +612,8 @@ class FunctionsCustomServerTest extends Scope $this->assertEquals(202, $execution['headers']['status-code']); $this->assertNotEmpty($execution['body']['$id']); $this->assertNotEmpty($execution['body']['functionId']); - $this->assertEquals(true, self::$dateValidator->isValid($execution['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($execution['body']['$createdAt'])); $this->assertEquals($data['functionId'], $execution['body']['functionId']); $this->assertEquals('waiting', $execution['body']['status']); $this->assertEquals(0, $execution['body']['statusCode']); @@ -623,7 +630,7 @@ class FunctionsCustomServerTest extends Scope $this->assertNotEmpty($execution['body']['$id']); $this->assertNotEmpty($execution['body']['functionId']); - $this->assertEquals(true, self::$dateValidator->isValid($execution['body']['$createdAt'])); + $this->assertEquals(true, $dateValidator->isValid($execution['body']['$createdAt'])); $this->assertEquals($data['functionId'], $execution['body']['functionId']); $this->assertEquals('completed', $execution['body']['status']); $this->assertEquals(200, $execution['body']['statusCode']); diff --git a/tests/e2e/Services/Storage/StorageBase.php b/tests/e2e/Services/Storage/StorageBase.php index e30cf512b8..9502f841f7 100644 --- a/tests/e2e/Services/Storage/StorageBase.php +++ b/tests/e2e/Services/Storage/StorageBase.php @@ -8,6 +8,7 @@ use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; +use Utopia\Database\Validator\DatetimeValidator; trait StorageBase { @@ -52,7 +53,8 @@ trait StorageBase ]); $this->assertEquals(201, $file['headers']['status-code']); $this->assertNotEmpty($file['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('logo.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -120,7 +122,7 @@ trait StorageBase $this->assertEquals(201, $largeFile['headers']['status-code']); $this->assertNotEmpty($largeFile['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($largeFile['body']['$createdAt'])); + $this->assertEquals(true, $dateValidator->isValid($largeFile['body']['$createdAt'])); $this->assertEquals('large-file.mp4', $largeFile['body']['name']); $this->assertEquals('video/mp4', $largeFile['body']['mimeType']); $this->assertEquals($totalSize, $largeFile['body']['sizeOriginal']); @@ -283,7 +285,8 @@ trait StorageBase ]); $this->assertEquals(201, $file['headers']['status-code']); $this->assertNotEmpty($file['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('logo.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -373,7 +376,8 @@ trait StorageBase $this->assertEquals(200, $file1['headers']['status-code']); $this->assertNotEmpty($file1['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($file1['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($file1['body']['$createdAt'])); $this->assertEquals('logo.png', $file1['body']['name']); $this->assertEquals('image/png', $file1['body']['mimeType']); $this->assertEquals(47218, $file1['body']['sizeOriginal']); @@ -712,7 +716,8 @@ trait StorageBase $this->assertEquals(200, $file['headers']['status-code']); $this->assertNotEmpty($file['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('logo.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); diff --git a/tests/e2e/Services/Storage/StorageCustomClientTest.php b/tests/e2e/Services/Storage/StorageCustomClientTest.php index 8b22ab3181..d960c92f7c 100644 --- a/tests/e2e/Services/Storage/StorageCustomClientTest.php +++ b/tests/e2e/Services/Storage/StorageCustomClientTest.php @@ -17,6 +17,7 @@ use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; use Utopia\Database\Validator\Authorization; +use Utopia\Database\Validator\DatetimeValidator; class StorageCustomClientTest extends Scope { @@ -63,7 +64,8 @@ class StorageCustomClientTest extends Scope $fileId = $file['body']['$id']; $this->assertEquals($file['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('permissions.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -159,7 +161,8 @@ class StorageCustomClientTest extends Scope $fileId = $file['body']['$id']; $this->assertEquals($file['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('permissions.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -245,7 +248,8 @@ class StorageCustomClientTest extends Scope $fileId = $file['body']['$id']; $this->assertEquals($file['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('permissions.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -370,7 +374,8 @@ class StorageCustomClientTest extends Scope $fileId = $file['body']['$id']; $this->assertEquals($file['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('permissions.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -548,7 +553,8 @@ class StorageCustomClientTest extends Scope $fileId = $file['body']['$id']; $this->assertEquals($file['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('permissions.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -710,7 +716,8 @@ class StorageCustomClientTest extends Scope $fileId = $file1['body']['$id']; $this->assertEquals($file1['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, self::$dateValidator->isValid($file1['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($file1['body']['$createdAt'])); $this->assertEquals('permissions.png', $file1['body']['name']); $this->assertEquals('image/png', $file1['body']['mimeType']); $this->assertEquals(47218, $file1['body']['sizeOriginal']); @@ -799,7 +806,8 @@ class StorageCustomClientTest extends Scope $fileId = $file1['body']['$id']; $this->assertEquals($file1['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, self::$dateValidator->isValid($file1['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($file1['body']['$createdAt'])); $this->assertEquals('permissions.png', $file1['body']['name']); $this->assertEquals('image/png', $file1['body']['mimeType']); $this->assertEquals(47218, $file1['body']['sizeOriginal']); @@ -888,7 +896,8 @@ class StorageCustomClientTest extends Scope $fileId = $file1['body']['$id']; $this->assertEquals($file1['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, self::$dateValidator->isValid($file1['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($file1['body']['$createdAt'])); $this->assertEquals('permissions.png', $file1['body']['name']); $this->assertEquals('image/png', $file1['body']['mimeType']); $this->assertEquals(47218, $file1['body']['sizeOriginal']); @@ -1027,7 +1036,8 @@ class StorageCustomClientTest extends Scope $fileId = $file['body']['$id']; $this->assertEquals($file['headers']['status-code'], 201); $this->assertNotEmpty($fileId); - $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('permissions.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); @@ -1262,7 +1272,8 @@ class StorageCustomClientTest extends Scope $this->assertContains(Permission::read(Role::user($this->getUser()['$id'])), $file['body']['$permissions']); $this->assertContains(Permission::update(Role::user($this->getUser()['$id'])), $file['body']['$permissions']); $this->assertContains(Permission::delete(Role::user($this->getUser()['$id'])), $file['body']['$permissions']); - $this->assertEquals(true, self::$dateValidator->isValid($file['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($file['body']['$createdAt'])); $this->assertEquals('permissions.png', $file['body']['name']); $this->assertEquals('image/png', $file['body']['mimeType']); $this->assertEquals(47218, $file['body']['sizeOriginal']); diff --git a/tests/e2e/Services/Storage/StorageCustomServerTest.php b/tests/e2e/Services/Storage/StorageCustomServerTest.php index d4b2f7db49..8bba5b6e7f 100644 --- a/tests/e2e/Services/Storage/StorageCustomServerTest.php +++ b/tests/e2e/Services/Storage/StorageCustomServerTest.php @@ -8,6 +8,7 @@ use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; +use Utopia\Database\Validator\DatetimeValidator; class StorageCustomServerTest extends Scope { @@ -30,7 +31,8 @@ class StorageCustomServerTest extends Scope ]); $this->assertEquals(201, $bucket['headers']['status-code']); $this->assertNotEmpty($bucket['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($bucket['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($bucket['body']['$createdAt'])); $this->assertIsArray($bucket['body']['$permissions']); $this->assertIsArray($bucket['body']['allowedFileExtensions']); $this->assertEquals('Test Bucket', $bucket['body']['name']); @@ -228,7 +230,8 @@ class StorageCustomServerTest extends Scope ]); $this->assertEquals(200, $bucket['headers']['status-code']); $this->assertNotEmpty($bucket['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($bucket['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($bucket['body']['$createdAt'])); $this->assertIsArray($bucket['body']['$permissions']); $this->assertIsArray($bucket['body']['allowedFileExtensions']); $this->assertEquals('Test Bucket Updated', $bucket['body']['name']); diff --git a/tests/e2e/Services/Teams/TeamsBase.php b/tests/e2e/Services/Teams/TeamsBase.php index bd65971b82..a66939b46a 100644 --- a/tests/e2e/Services/Teams/TeamsBase.php +++ b/tests/e2e/Services/Teams/TeamsBase.php @@ -6,6 +6,7 @@ use Tests\E2E\Client; use Utopia\Database\Database; use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; +use Utopia\Database\Validator\DatetimeValidator; trait TeamsBase { @@ -28,7 +29,8 @@ trait TeamsBase $this->assertEquals('Arsenal', $response1['body']['name']); $this->assertGreaterThan(-1, $response1['body']['total']); $this->assertIsInt($response1['body']['total']); - $this->assertEquals(true, self::$dateValidator->isValid($response1['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response1['body']['$createdAt'])); $teamUid = $response1['body']['$id']; $teamName = $response1['body']['name']; @@ -48,7 +50,7 @@ trait TeamsBase $this->assertEquals('Manchester United', $response2['body']['name']); $this->assertGreaterThan(-1, $response2['body']['total']); $this->assertIsInt($response2['body']['total']); - $this->assertEquals(true, self::$dateValidator->isValid($response2['body']['$createdAt'])); + $this->assertEquals(true, $dateValidator->isValid($response2['body']['$createdAt'])); $response3 = $this->client->call(Client::METHOD_POST, '/teams', array_merge([ 'content-type' => 'application/json', @@ -63,7 +65,7 @@ trait TeamsBase $this->assertEquals('Newcastle', $response3['body']['name']); $this->assertGreaterThan(-1, $response3['body']['total']); $this->assertIsInt($response3['body']['total']); - $this->assertEquals(true, self::$dateValidator->isValid($response3['body']['$createdAt'])); + $this->assertEquals(true, $dateValidator->isValid($response3['body']['$createdAt'])); /** * Test for FAILURE */ @@ -98,7 +100,8 @@ trait TeamsBase $this->assertEquals('Arsenal', $response['body']['name']); $this->assertGreaterThan(-1, $response['body']['total']); $this->assertIsInt($response['body']['total']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['$createdAt'])); /** * Test for FAILURE @@ -275,7 +278,8 @@ trait TeamsBase $this->assertEquals('Demo', $response['body']['name']); $this->assertGreaterThan(-1, $response['body']['total']); $this->assertIsInt($response['body']['total']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['$createdAt'])); $response = $this->client->call(Client::METHOD_PUT, '/teams/' . $response['body']['$id'], array_merge([ 'content-type' => 'application/json', @@ -290,7 +294,7 @@ trait TeamsBase $this->assertEquals('Demo New', $response['body']['name']); $this->assertGreaterThan(-1, $response['body']['total']); $this->assertIsInt($response['body']['total']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); + $this->assertEquals(true, $dateValidator->isValid($response['body']['$createdAt'])); /** * Test for FAILURE @@ -326,7 +330,8 @@ trait TeamsBase $this->assertEquals('Demo', $response['body']['name']); $this->assertGreaterThan(-1, $response['body']['total']); $this->assertIsInt($response['body']['total']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['$createdAt'])); $response = $this->client->call(Client::METHOD_DELETE, '/teams/' . $teamUid, array_merge([ 'content-type' => 'application/json', diff --git a/tests/e2e/Services/Teams/TeamsBaseClient.php b/tests/e2e/Services/Teams/TeamsBaseClient.php index aaa11d2f9b..c3754693b3 100644 --- a/tests/e2e/Services/Teams/TeamsBaseClient.php +++ b/tests/e2e/Services/Teams/TeamsBaseClient.php @@ -5,6 +5,7 @@ namespace Tests\E2E\Services\Teams; use Tests\E2E\Client; use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; +use Utopia\Database\Validator\DatetimeValidator; trait TeamsBaseClient { @@ -150,7 +151,8 @@ trait TeamsBaseClient $this->assertNotEmpty($response['body']['teamId']); $this->assertNotEmpty($response['body']['teamName']); $this->assertCount(2, $response['body']['roles']); - $this->assertEquals(false, self::$dateValidator->isValid($response['body']['joined'])); // is null in DB + $dateValidator = new DatetimeValidator(); + $this->assertEquals(false, $dateValidator->isValid($response['body']['joined'])); // is null in DB $this->assertEquals(false, $response['body']['confirm']); /** @@ -203,7 +205,8 @@ trait TeamsBaseClient $this->assertNotEmpty($response['body']['teamId']); $this->assertNotEmpty($response['body']['teamName']); $this->assertCount(2, $response['body']['roles']); - $this->assertEquals(false, self::$dateValidator->isValid($response['body']['joined'])); // is null in DB + $dateValidator = new DatetimeValidator(); + $this->assertEquals(false, $dateValidator->isValid($response['body']['joined'])); // is null in DB $this->assertEquals(false, $response['body']['confirm']); $lastEmail = $this->getLastEmail(); @@ -337,7 +340,8 @@ trait TeamsBaseClient $this->assertNotEmpty($response['body']['userId']); $this->assertNotEmpty($response['body']['teamId']); $this->assertCount(2, $response['body']['roles']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['joined'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['joined'])); $this->assertEquals(true, $response['body']['confirm']); $session = $this->client->parseCookie((string)$response['headers']['set-cookie'])['a_session_' . $this->getProject()['$id']]; $data['session'] = $session; @@ -369,7 +373,7 @@ trait TeamsBaseClient $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); + $this->assertEquals(true, $dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $this->assertEquals($response['body']['name'], $name); @@ -403,7 +407,7 @@ trait TeamsBaseClient $this->assertIsArray($response['body']); $this->assertNotEmpty($response['body']); $this->assertNotEmpty($response['body']['$id']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['registration'])); + $this->assertEquals(true, $dateValidator->isValid($response['body']['registration'])); $this->assertEquals($response['body']['email'], $email); $this->assertEquals($response['body']['name'], $name); diff --git a/tests/e2e/Services/Teams/TeamsBaseServer.php b/tests/e2e/Services/Teams/TeamsBaseServer.php index db5ca697f9..629aa8f4ad 100644 --- a/tests/e2e/Services/Teams/TeamsBaseServer.php +++ b/tests/e2e/Services/Teams/TeamsBaseServer.php @@ -5,6 +5,7 @@ namespace Tests\E2E\Services\Teams; use Tests\E2E\Client; use Utopia\Database\Database; use Utopia\Database\DateTime; +use Utopia\Database\Validator\DatetimeValidator; trait TeamsBaseServer { @@ -57,7 +58,8 @@ trait TeamsBaseServer $this->assertNotEmpty($response['body']['teamId']); $this->assertNotEmpty($response['body']['teamName']); $this->assertCount(2, $response['body']['roles']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['joined'])); // is null in DB + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['joined'])); // is null in DB $this->assertEquals(true, $response['body']['confirm']); /** @@ -108,7 +110,8 @@ trait TeamsBaseServer $this->assertEquals($email, $response['body']['userEmail']); $this->assertNotEmpty($response['body']['teamId']); $this->assertCount(2, $response['body']['roles']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['joined'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['joined'])); $this->assertEquals(true, $response['body']['confirm']); $userUid = $response['body']['userId']; @@ -252,7 +255,8 @@ trait TeamsBaseServer $this->assertEquals('Arsenal', $response['body']['name']); $this->assertEquals(1, $response['body']['total']); $this->assertIsInt($response['body']['total']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($response['body']['$createdAt'])); /** Delete User */ $user = $this->client->call(Client::METHOD_DELETE, '/users/' . $userUid, array_merge([ @@ -277,6 +281,6 @@ trait TeamsBaseServer $this->assertEquals('Arsenal', $response['body']['name']); $this->assertEquals(0, $response['body']['total']); $this->assertIsInt($response['body']['total']); - $this->assertEquals(true, self::$dateValidator->isValid($response['body']['$createdAt'])); + $this->assertEquals(true, $dateValidator->isValid($response['body']['$createdAt'])); } } diff --git a/tests/e2e/Services/Webhooks/WebhooksBase.php b/tests/e2e/Services/Webhooks/WebhooksBase.php index 33fd9107f4..e0563d612c 100644 --- a/tests/e2e/Services/Webhooks/WebhooksBase.php +++ b/tests/e2e/Services/Webhooks/WebhooksBase.php @@ -9,6 +9,7 @@ use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; +use Utopia\Database\Validator\DatetimeValidator; trait WebhooksBase { @@ -529,7 +530,8 @@ trait WebhooksBase $this->assertNotEmpty($webhook['data']['$id']); $this->assertIsArray($webhook['data']['$permissions']); $this->assertEquals($webhook['data']['name'], 'logo.png'); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['$createdAt'])); $this->assertNotEmpty($webhook['data']['signature']); $this->assertEquals($webhook['data']['mimeType'], 'image/png'); $this->assertEquals($webhook['data']['sizeOriginal'], 47218); @@ -587,7 +589,8 @@ trait WebhooksBase $this->assertNotEmpty($webhook['data']['$id']); $this->assertIsArray($webhook['data']['$permissions']); $this->assertEquals($webhook['data']['name'], 'logo.png'); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['$createdAt'])); $this->assertNotEmpty($webhook['data']['signature']); $this->assertEquals($webhook['data']['mimeType'], 'image/png'); $this->assertEquals($webhook['data']['sizeOriginal'], 47218); @@ -637,7 +640,8 @@ trait WebhooksBase $this->assertNotEmpty($webhook['data']['$id']); $this->assertIsArray($webhook['data']['$permissions']); $this->assertEquals($webhook['data']['name'], 'logo.png'); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['$createdAt'])); $this->assertNotEmpty($webhook['data']['signature']); $this->assertEquals($webhook['data']['mimeType'], 'image/png'); $this->assertEquals($webhook['data']['sizeOriginal'], 47218); @@ -719,7 +723,8 @@ trait WebhooksBase $this->assertEquals('Arsenal', $webhook['data']['name']); $this->assertGreaterThan(-1, $webhook['data']['total']); $this->assertIsInt($webhook['data']['total']); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['$createdAt'])); /** * Test for FAILURE @@ -764,7 +769,8 @@ trait WebhooksBase $this->assertEquals('Demo New', $webhook['data']['name']); $this->assertGreaterThan(-1, $webhook['data']['total']); $this->assertIsInt($webhook['data']['total']); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['$createdAt'])); /** * Test for FAILURE @@ -813,7 +819,8 @@ trait WebhooksBase $this->assertEquals('Chelsea', $webhook['data']['name']); $this->assertGreaterThan(-1, $webhook['data']['total']); $this->assertIsInt($webhook['data']['total']); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['$createdAt'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['$createdAt'])); /** * Test for FAILURE @@ -874,7 +881,8 @@ trait WebhooksBase $this->assertNotEmpty($webhook['data']['userId']); $this->assertNotEmpty($webhook['data']['teamId']); $this->assertCount(2, $webhook['data']['roles']); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['invited'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['invited'])); $this->assertEquals(('server' === $this->getSide()), $webhook['data']['confirm']); /** @@ -946,7 +954,8 @@ trait WebhooksBase $this->assertNotEmpty($webhook['data']['userId']); $this->assertNotEmpty($webhook['data']['teamId']); $this->assertCount(2, $webhook['data']['roles']); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['invited'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['invited'])); $this->assertEquals(('server' === $this->getSide()), $webhook['data']['confirm']); } } diff --git a/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php b/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php index 262023f5c1..921952257e 100644 --- a/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php +++ b/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php @@ -9,6 +9,7 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; +use Utopia\Database\Validator\DatetimeValidator; class WebhooksCustomClientTest extends Scope { @@ -60,7 +61,8 @@ class WebhooksCustomClientTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id']), true); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals($webhook['data']['name'], $name); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['registration'])); $this->assertEquals($webhook['data']['status'], true); $this->assertEquals($webhook['data']['email'], $email); $this->assertEquals($webhook['data']['emailVerification'], false); @@ -136,7 +138,8 @@ class WebhooksCustomClientTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals($webhook['data']['name'], $name); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['registration'])); $this->assertEquals($webhook['data']['status'], false); $this->assertEquals($webhook['data']['email'], $email); $this->assertEquals($webhook['data']['emailVerification'], false); @@ -196,7 +199,8 @@ class WebhooksCustomClientTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id']), true); $this->assertNotEmpty($webhook['data']['$id']); $this->assertNotEmpty($webhook['data']['userId']); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['expire'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['expire'])); $this->assertEquals($webhook['data']['ip'], '127.0.0.1'); $this->assertNotEmpty($webhook['data']['osCode']); $this->assertIsString($webhook['data']['osCode']); @@ -371,7 +375,8 @@ class WebhooksCustomClientTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); $this->assertNotEmpty($webhook['data']['$id']); $this->assertNotEmpty($webhook['data']['userId']); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['expire'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['expire'])); $this->assertEquals($webhook['data']['ip'], '127.0.0.1'); $this->assertNotEmpty($webhook['data']['osCode']); $this->assertIsString($webhook['data']['osCode']); @@ -683,7 +688,8 @@ class WebhooksCustomClientTest extends Scope $this->assertNotEmpty($webhook['data']['$id']); $this->assertNotEmpty($webhook['data']['userId']); $this->assertNotEmpty($webhook['data']['secret']); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['expire'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['expire'])); $data['secret'] = $webhook['data']['secret']; @@ -743,7 +749,8 @@ class WebhooksCustomClientTest extends Scope $this->assertNotEmpty($webhook['data']['$id']); $this->assertNotEmpty($webhook['data']['userId']); $this->assertNotEmpty($webhook['data']['secret']); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['expire'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['expire'])); $data['secret'] = $webhook['data']['secret']; @@ -799,7 +806,8 @@ class WebhooksCustomClientTest extends Scope $this->assertNotEmpty($webhook['data']['$id']); $this->assertNotEmpty($webhook['data']['userId']); $this->assertNotEmpty($webhook['data']['secret']); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['expire'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['expire'])); $data['secret'] = $webhook['data']['secret']; @@ -857,7 +865,8 @@ class WebhooksCustomClientTest extends Scope $this->assertNotEmpty($webhook['data']['$id']); $this->assertNotEmpty($webhook['data']['userId']); $this->assertNotEmpty($webhook['data']['secret']); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['expire'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['expire'])); $data['secret'] = $webhook['data']['secret']; @@ -920,7 +929,8 @@ class WebhooksCustomClientTest extends Scope $this->assertNotEmpty($webhook['data']['userId']); $this->assertNotEmpty($webhook['data']['teamId']); $this->assertCount(2, $webhook['data']['roles']); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['joined'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['joined'])); $this->assertEquals(true, $webhook['data']['confirm']); /** diff --git a/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php b/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php index 869bc156d2..ca5185395d 100644 --- a/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php +++ b/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php @@ -12,6 +12,7 @@ use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; +use Utopia\Database\Validator\DatetimeValidator; class WebhooksCustomServerTest extends Scope { @@ -245,7 +246,8 @@ class WebhooksCustomServerTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals($webhook['data']['name'], $name); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['registration'])); $this->assertEquals($webhook['data']['status'], true); $this->assertEquals($webhook['data']['email'], $email); $this->assertEquals($webhook['data']['emailVerification'], false); @@ -336,7 +338,8 @@ class WebhooksCustomServerTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals($webhook['data']['name'], $data['name']); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['registration'])); $this->assertEquals($webhook['data']['status'], false); $this->assertEquals($webhook['data']['email'], $data['email']); $this->assertEquals($webhook['data']['emailVerification'], false); @@ -378,7 +381,8 @@ class WebhooksCustomServerTest extends Scope $this->assertEquals(empty($webhook['headers']['X-Appwrite-Webhook-User-Id'] ?? ''), ('server' === $this->getSide())); $this->assertNotEmpty($webhook['data']['$id']); $this->assertEquals($webhook['data']['name'], $data['name']); - $this->assertEquals(true, self::$dateValidator->isValid($webhook['data']['registration'])); + $dateValidator = new DatetimeValidator(); + $this->assertEquals(true, $dateValidator->isValid($webhook['data']['registration'])); $this->assertEquals($webhook['data']['status'], false); $this->assertEquals($webhook['data']['email'], $data['email']); $this->assertEquals($webhook['data']['emailVerification'], false); From 91e17e4e94a2bdebd11f23b65b2e8296660a1a5d Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 19 Dec 2022 13:21:32 +0200 Subject: [PATCH 26/94] remove static $dateValidator --- tests/e2e/Scopes/Scope.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/e2e/Scopes/Scope.php b/tests/e2e/Scopes/Scope.php index c5079962a0..f590f31fce 100644 --- a/tests/e2e/Scopes/Scope.php +++ b/tests/e2e/Scopes/Scope.php @@ -20,8 +20,6 @@ abstract class Scope extends TestCase protected string $endpoint = 'http://localhost/v1'; - public static Validator $dateValidator; - protected function setUp(): void { $this->client = new Client(); From dfd122efaa83c960750acb05d395fe7d8091138d Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 19 Dec 2022 13:25:01 +0200 Subject: [PATCH 27/94] Change Client data hint --- tests/e2e/Scopes/Scope.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tests/e2e/Scopes/Scope.php b/tests/e2e/Scopes/Scope.php index f590f31fce..67361660a0 100644 --- a/tests/e2e/Scopes/Scope.php +++ b/tests/e2e/Scopes/Scope.php @@ -13,11 +13,7 @@ abstract class Scope extends TestCase { use Retryable; - /** - * @var Client - */ - protected $client = null; - + protected ?Client $client = null; protected string $endpoint = 'http://localhost/v1'; protected function setUp(): void From 616bead19f90c8fc092042b66ddb950ff9b05be2 Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 19 Dec 2022 13:58:16 +0200 Subject: [PATCH 28/94] stopOnFailure --- phpunit.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpunit.xml b/phpunit.xml index 4074fe0f1c..4012c8c276 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -6,7 +6,7 @@ convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" - stopOnFailure="true" + stopOnFailure="false" > From 37fc5114abb9a8a2d23ea592e322348c3bd388e6 Mon Sep 17 00:00:00 2001 From: "Vincent (Wen Yu) Ge" Date: Tue, 20 Dec 2022 21:39:41 +0000 Subject: [PATCH 29/94] Update permission param descriptions for grammar and clarity. --- app/controllers/api/databases.php | 4 +- app/controllers/api/storage.php | 2 +- composer.lock | 97 ++++++++++++++++--------------- 3 files changed, 53 insertions(+), 50 deletions(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 725c163c73..0ebed99024 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -746,7 +746,7 @@ App::put('/v1/databases/:databaseId/collections/:collectionId') ->param('databaseId', '', new UID(), 'Database ID.') ->param('collectionId', '', new UID(), 'Collection ID.') ->param('name', null, new Text(128), 'Collection name. Max length: 128 chars.') - ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of permission strings. By default the current permission are inherited. [Learn more about permissions](/docs/permissions).', true) + ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](/docs/permissions).', true) ->param('documentSecurity', false, new Boolean(true), 'Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](/docs/permissions).', true) ->param('enabled', true, new Boolean(), 'Is collection enabled?', true) ->inject('response') @@ -1858,7 +1858,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/documents') ->param('documentId', '', new CustomId(), 'Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('collectionId', '', new UID(), 'Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection). Make sure to define attributes before creating documents.') ->param('data', [], new JSON(), 'Document data as JSON object.') - ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](/docs/permissions).', true) + ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permissions strings. By default only the current user is granted with all permissions. [Learn more about permissions](/docs/permissions).', true) ->inject('response') ->inject('dbForProject') ->inject('user') diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 3c8ffc5644..13d4286795 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -349,7 +349,7 @@ App::post('/v1/storage/buckets/:bucketId/files') ->param('bucketId', '', new UID(), 'Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](/docs/server/storage#createBucket).') ->param('fileId', '', new CustomId(), 'File ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('file', [], new File(), 'Binary file.', false) - ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](/docs/permissions).', true) + ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permission strings. By default only the current user is granted with all permissions. [Learn more about permissions](/docs/permissions).', true) ->inject('request') ->inject('response') ->inject('dbForProject') diff --git a/composer.lock b/composer.lock index e97546287f..d62c0131ab 100644 --- a/composer.lock +++ b/composer.lock @@ -801,20 +801,21 @@ "issues": "https://github.com/influxdata/influxdb-php/issues", "source": "https://github.com/influxdata/influxdb-php/tree/1.15.2" }, + "abandoned": true, "time": "2020-12-26T17:45:17+00:00" }, { "name": "laravel/pint", - "version": "v1.2.0", + "version": "v1.2.1", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "1d276e4c803397a26cc337df908f55c2a4e90d86" + "reference": "e60e2112ee779ce60f253695b273d1646a17d6f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/1d276e4c803397a26cc337df908f55c2a4e90d86", - "reference": "1d276e4c803397a26cc337df908f55c2a4e90d86", + "url": "https://api.github.com/repos/laravel/pint/zipball/e60e2112ee779ce60f253695b273d1646a17d6f1", + "reference": "e60e2112ee779ce60f253695b273d1646a17d6f1", "shasum": "" }, "require": { @@ -826,10 +827,10 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.11.0", - "illuminate/view": "^9.27", - "laravel-zero/framework": "^9.1.3", - "mockery/mockery": "^1.5.0", - "nunomaduro/larastan": "^2.2", + "illuminate/view": "^9.32.0", + "laravel-zero/framework": "^9.2.0", + "mockery/mockery": "^1.5.1", + "nunomaduro/larastan": "^2.2.0", "nunomaduro/termwind": "^1.14.0", "pestphp/pest": "^1.22.1" }, @@ -867,7 +868,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2022-09-13T15:07:15+00:00" + "time": "2022-11-29T16:25:20+00:00" }, { "name": "matomo/device-detector", @@ -1461,16 +1462,16 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.1.1", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918" + "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", - "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3", + "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3", "shasum": "" }, "require": { @@ -1479,7 +1480,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -1508,7 +1509,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0" }, "funding": [ { @@ -1524,7 +1525,7 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2022-11-25T10:21:52+00:00" }, { "name": "utopia-php/abuse", @@ -1945,24 +1946,25 @@ }, { "name": "utopia-php/framework", - "version": "0.25.0", + "version": "0.25.1", "source": { "type": "git", "url": "https://github.com/utopia-php/framework.git", - "reference": "c524f681254255c8204fbf7919c53bf3b4982636" + "reference": "2391b397135586b2100d39e338827bef8d2f4ad0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/framework/zipball/c524f681254255c8204fbf7919c53bf3b4982636", - "reference": "c524f681254255c8204fbf7919c53bf3b4982636", + "url": "https://api.github.com/repos/utopia-php/framework/zipball/2391b397135586b2100d39e338827bef8d2f4ad0", + "reference": "2391b397135586b2100d39e338827bef8d2f4ad0", "shasum": "" }, "require": { "php": ">=8.0.0" }, "require-dev": { + "laravel/pint": "^1.2", "phpunit/phpunit": "^9.5.25", - "vimeo/psalm": "^4.27.0" + "vimeo/psalm": "4.27.0" }, "type": "library", "autoload": { @@ -1982,9 +1984,9 @@ ], "support": { "issues": "https://github.com/utopia-php/framework/issues", - "source": "https://github.com/utopia-php/framework/tree/0.25.0" + "source": "https://github.com/utopia-php/framework/tree/0.25.1" }, - "time": "2022-11-02T09:49:57+00:00" + "time": "2022-11-23T18:22:23+00:00" }, { "name": "utopia-php/image", @@ -2777,16 +2779,16 @@ }, { "name": "matthiasmullie/minify", - "version": "1.3.69", + "version": "1.3.70", "source": { "type": "git", "url": "https://github.com/matthiasmullie/minify.git", - "reference": "a61c949cccd086808063611ef9698eabe42ef22f" + "reference": "2807d9f9bece6877577ad44acb5c801bb3ae536b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/a61c949cccd086808063611ef9698eabe42ef22f", - "reference": "a61c949cccd086808063611ef9698eabe42ef22f", + "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/2807d9f9bece6877577ad44acb5c801bb3ae536b", + "reference": "2807d9f9bece6877577ad44acb5c801bb3ae536b", "shasum": "" }, "require": { @@ -2795,9 +2797,10 @@ "php": ">=5.3.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "~2.0", - "matthiasmullie/scrapbook": "dev-master", - "phpunit/phpunit": ">=4.8" + "friendsofphp/php-cs-fixer": ">=2.0", + "matthiasmullie/scrapbook": ">=1.3", + "phpunit/phpunit": ">=4.8", + "squizlabs/php_codesniffer": ">=3.0" }, "suggest": { "psr/cache-implementation": "Cache implementation to use with Minify::cache" @@ -2820,12 +2823,12 @@ { "name": "Matthias Mullie", "email": "minify@mullie.eu", - "homepage": "http://www.mullie.eu", + "homepage": "https://www.mullie.eu", "role": "Developer" } ], "description": "CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.", - "homepage": "http://www.minifier.org", + "homepage": "https://github.com/matthiasmullie/minify", "keywords": [ "JS", "css", @@ -2835,7 +2838,7 @@ ], "support": { "issues": "https://github.com/matthiasmullie/minify/issues", - "source": "https://github.com/matthiasmullie/minify/tree/1.3.69" + "source": "https://github.com/matthiasmullie/minify/tree/1.3.70" }, "funding": [ { @@ -2843,7 +2846,7 @@ "type": "github" } ], - "time": "2022-08-01T09:00:18+00:00" + "time": "2022-12-09T12:56:44+00:00" }, { "name": "matthiasmullie/path-converter", @@ -3291,21 +3294,21 @@ }, { "name": "phpspec/prophecy", - "version": "v1.15.0", + "version": "v1.16.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be8cac52a0827776ff9ccda8c381ac5b71aeb359", + "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359", "shasum": "" }, "require": { "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", + "php": "^7.2 || 8.0.* || 8.1.* || 8.2.*", "phpdocumentor/reflection-docblock": "^5.2", "sebastian/comparator": "^3.0 || ^4.0", "sebastian/recursion-context": "^3.0 || ^4.0" @@ -3352,22 +3355,22 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + "source": "https://github.com/phpspec/prophecy/tree/v1.16.0" }, - "time": "2021-12-08T12:19:24+00:00" + "time": "2022-11-29T15:06:56+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.19", + "version": "9.2.22", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "c77b56b63e3d2031bd8997fcec43c1925ae46559" + "reference": "e4bf60d2220b4baaa0572986b5d69870226b06df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c77b56b63e3d2031bd8997fcec43c1925ae46559", - "reference": "c77b56b63e3d2031bd8997fcec43c1925ae46559", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e4bf60d2220b4baaa0572986b5d69870226b06df", + "reference": "e4bf60d2220b4baaa0572986b5d69870226b06df", "shasum": "" }, "require": { @@ -3423,7 +3426,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.19" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.22" }, "funding": [ { @@ -3431,7 +3434,7 @@ "type": "github" } ], - "time": "2022-11-18T07:47:47+00:00" + "time": "2022-12-18T16:40:55+00:00" }, { "name": "phpunit/php-file-iterator", From 8239113b9532c0c45872afefda1ee7398eaffd77 Mon Sep 17 00:00:00 2001 From: "Vincent (Wen Yu) Ge" Date: Tue, 20 Dec 2022 21:43:55 +0000 Subject: [PATCH 30/94] Grammarly check --- app/controllers/api/databases.php | 8 ++++---- app/controllers/api/storage.php | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 0ebed99024..7b69884d30 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -491,7 +491,7 @@ App::post('/v1/databases/:databaseId/collections') ->param('databaseId', '', new UID(), 'Database ID.') ->param('collectionId', '', new CustomId(), 'Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('name', '', new Text(128), 'Collection name. Max length: 128 chars.') - ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](/docs/permissions).', true) + ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](/docs/permissions).', true) ->param('documentSecurity', false, new Boolean(true), 'Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](/docs/permissions).', true) ->inject('response') ->inject('dbForProject') @@ -746,7 +746,7 @@ App::put('/v1/databases/:databaseId/collections/:collectionId') ->param('databaseId', '', new UID(), 'Database ID.') ->param('collectionId', '', new UID(), 'Collection ID.') ->param('name', null, new Text(128), 'Collection name. Max length: 128 chars.') - ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](/docs/permissions).', true) + ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](/docs/permissions).', true) ->param('documentSecurity', false, new Boolean(true), 'Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](/docs/permissions).', true) ->param('enabled', true, new Boolean(), 'Is collection enabled?', true) ->inject('response') @@ -1858,7 +1858,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/documents') ->param('documentId', '', new CustomId(), 'Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('collectionId', '', new UID(), 'Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection). Make sure to define attributes before creating documents.') ->param('data', [], new JSON(), 'Document data as JSON object.') - ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permissions strings. By default only the current user is granted with all permissions. [Learn more about permissions](/docs/permissions).', true) + ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](/docs/permissions).', true) ->inject('response') ->inject('dbForProject') ->inject('user') @@ -2246,7 +2246,7 @@ App::patch('/v1/databases/:databaseId/collections/:collectionId/documents/:docum ->param('collectionId', '', new UID(), 'Collection ID.') ->param('documentId', '', new UID(), 'Document ID.') ->param('data', [], new JSON(), 'Document data as JSON object. Include only attribute and value pairs to be updated.', true) - ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](/docs/permissions).', true) + ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](/docs/permissions).', true) ->inject('response') ->inject('dbForProject') ->inject('events') diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 13d4286795..74c984595e 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -60,7 +60,7 @@ App::post('/v1/storage/buckets') ->label('sdk.response.model', Response::MODEL_BUCKET) ->param('bucketId', '', new CustomId(), 'Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('name', '', new Text(128), 'Bucket name') - ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](/docs/permissions).', true) + ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](/docs/permissions).', true) ->param('fileSecurity', false, new Boolean(true), 'Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](/docs/permissions).', true) ->param('enabled', true, new Boolean(true), 'Is bucket enabled?', true) ->param('maximumFileSize', (int) App::getEnv('_APP_STORAGE_LIMIT', 0), new Range(1, (int) App::getEnv('_APP_STORAGE_LIMIT', 0)), 'Maximum file size allowed in bytes. Maximum allowed value is ' . Storage::human(App::getEnv('_APP_STORAGE_LIMIT', 0), 0) . '. 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)', true) @@ -232,7 +232,7 @@ App::put('/v1/storage/buckets/:bucketId') ->label('sdk.response.model', Response::MODEL_BUCKET) ->param('bucketId', '', new UID(), 'Bucket unique ID.') ->param('name', null, new Text(128), 'Bucket name', false) - ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](/docs/permissions).', true) + ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](/docs/permissions).', true) ->param('fileSecurity', false, new Boolean(true), 'Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](/docs/permissions).', true) ->param('enabled', true, new Boolean(true), 'Is bucket enabled?', true) ->param('maximumFileSize', null, new Range(1, (int) App::getEnv('_APP_STORAGE_LIMIT', 0)), 'Maximum file size allowed in bytes. Maximum allowed value is ' . Storage::human((int)App::getEnv('_APP_STORAGE_LIMIT', 0), 0) . '. 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)', true) @@ -349,7 +349,7 @@ App::post('/v1/storage/buckets/:bucketId/files') ->param('bucketId', '', new UID(), 'Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](/docs/server/storage#createBucket).') ->param('fileId', '', new CustomId(), 'File ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('file', [], new File(), 'Binary file.', false) - ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permission strings. By default only the current user is granted with all permissions. [Learn more about permissions](/docs/permissions).', true) + ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](/docs/permissions).', true) ->inject('request') ->inject('response') ->inject('dbForProject') @@ -1256,7 +1256,7 @@ App::put('/v1/storage/buckets/:bucketId/files/:fileId') ->label('sdk.response.model', Response::MODEL_FILE) ->param('bucketId', '', new UID(), 'Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](/docs/server/storage#createBucket).') ->param('fileId', '', new UID(), 'File unique ID.') - ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permission string. By default the current permissions are inherited. [Learn more about permissions](/docs/permissions).', true) + ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](/docs/permissions).', true) ->inject('response') ->inject('dbForProject') ->inject('user') From b301a64dc4261a1fef3b53d9bad72f2d8f07d7c7 Mon Sep 17 00:00:00 2001 From: fogelito Date: Wed, 21 Dec 2022 10:02:22 +0200 Subject: [PATCH 31/94] clean up some use classes not in use --- app/controllers/api/projects.php | 1 - tests/e2e/Scopes/Scope.php | 2 -- tests/e2e/Services/Account/AccountCustomClientTest.php | 2 +- tests/e2e/Services/Functions/FunctionsCustomServerTest.php | 3 --- tests/e2e/Services/Storage/StorageBase.php | 1 - tests/e2e/Services/Storage/StorageCustomClientTest.php | 7 ------- tests/e2e/Services/Storage/StorageCustomServerTest.php | 1 - tests/e2e/Services/Teams/TeamsBase.php | 2 -- tests/e2e/Services/Teams/TeamsBaseClient.php | 1 - tests/e2e/Services/Teams/TeamsBaseServer.php | 2 -- tests/e2e/Services/Webhooks/WebhooksBase.php | 1 - tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php | 1 - tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php | 1 - 13 files changed, 1 insertion(+), 24 deletions(-) diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 3bfc90d40c..21845d6629 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -32,7 +32,6 @@ use Appwrite\Utopia\Database\Validator\Queries\Projects; use Utopia\Validator\ArrayList; use Utopia\Validator\Boolean; use Utopia\Validator\Hostname; -use Utopia\Validator\Integer; use Utopia\Validator\Range; use Utopia\Validator\Text; use Utopia\Validator\WhiteList; diff --git a/tests/e2e/Scopes/Scope.php b/tests/e2e/Scopes/Scope.php index 67361660a0..cf483b6275 100644 --- a/tests/e2e/Scopes/Scope.php +++ b/tests/e2e/Scopes/Scope.php @@ -6,8 +6,6 @@ use Appwrite\Tests\Retryable; use Tests\E2E\Client; use PHPUnit\Framework\TestCase; use Utopia\Database\Helpers\ID; -use Utopia\Database\Validator\DatetimeValidator; -use Utopia\Validator; abstract class Scope extends TestCase { diff --git a/tests/e2e/Services/Account/AccountCustomClientTest.php b/tests/e2e/Services/Account/AccountCustomClientTest.php index b89e0a0746..24a7e74890 100644 --- a/tests/e2e/Services/Account/AccountCustomClientTest.php +++ b/tests/e2e/Services/Account/AccountCustomClientTest.php @@ -9,8 +9,8 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; - use Utopia\Database\Validator\DatetimeValidator; + use function sleep; class AccountCustomClientTest extends Scope diff --git a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php index 0d2c6298da..3fb8ee9171 100644 --- a/tests/e2e/Services/Functions/FunctionsCustomServerTest.php +++ b/tests/e2e/Services/Functions/FunctionsCustomServerTest.php @@ -8,9 +8,6 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; -use Utopia\CLI\Console; -use Utopia\Database\Database; -use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; use Utopia\Database\Validator\DatetimeValidator; diff --git a/tests/e2e/Services/Storage/StorageBase.php b/tests/e2e/Services/Storage/StorageBase.php index 9502f841f7..72d3a99537 100644 --- a/tests/e2e/Services/Storage/StorageBase.php +++ b/tests/e2e/Services/Storage/StorageBase.php @@ -4,7 +4,6 @@ namespace Tests\E2E\Services\Storage; use CURLFile; use Tests\E2E\Client; -use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; diff --git a/tests/e2e/Services/Storage/StorageCustomClientTest.php b/tests/e2e/Services/Storage/StorageCustomClientTest.php index d960c92f7c..46ef1d6986 100644 --- a/tests/e2e/Services/Storage/StorageCustomClientTest.php +++ b/tests/e2e/Services/Storage/StorageCustomClientTest.php @@ -2,21 +2,14 @@ namespace Tests\E2E\Services\Storage; -use Appwrite\Auth\Auth; use CURLFile; -use Exception; -use PharIo\Manifest\Author; -use SebastianBergmann\RecursionContext\InvalidArgumentException; -use PHPUnit\Framework\ExpectationFailedException; use Tests\E2E\Client; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; -use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; -use Utopia\Database\Validator\Authorization; use Utopia\Database\Validator\DatetimeValidator; class StorageCustomClientTest extends Scope diff --git a/tests/e2e/Services/Storage/StorageCustomServerTest.php b/tests/e2e/Services/Storage/StorageCustomServerTest.php index 8bba5b6e7f..86c9c54302 100644 --- a/tests/e2e/Services/Storage/StorageCustomServerTest.php +++ b/tests/e2e/Services/Storage/StorageCustomServerTest.php @@ -6,7 +6,6 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; -use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; use Utopia\Database\Validator\DatetimeValidator; diff --git a/tests/e2e/Services/Teams/TeamsBase.php b/tests/e2e/Services/Teams/TeamsBase.php index a66939b46a..daaf65494d 100644 --- a/tests/e2e/Services/Teams/TeamsBase.php +++ b/tests/e2e/Services/Teams/TeamsBase.php @@ -3,8 +3,6 @@ namespace Tests\E2E\Services\Teams; use Tests\E2E\Client; -use Utopia\Database\Database; -use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; use Utopia\Database\Validator\DatetimeValidator; diff --git a/tests/e2e/Services/Teams/TeamsBaseClient.php b/tests/e2e/Services/Teams/TeamsBaseClient.php index c3754693b3..4e6cf85a10 100644 --- a/tests/e2e/Services/Teams/TeamsBaseClient.php +++ b/tests/e2e/Services/Teams/TeamsBaseClient.php @@ -3,7 +3,6 @@ namespace Tests\E2E\Services\Teams; use Tests\E2E\Client; -use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; use Utopia\Database\Validator\DatetimeValidator; diff --git a/tests/e2e/Services/Teams/TeamsBaseServer.php b/tests/e2e/Services/Teams/TeamsBaseServer.php index 629aa8f4ad..0714192bdf 100644 --- a/tests/e2e/Services/Teams/TeamsBaseServer.php +++ b/tests/e2e/Services/Teams/TeamsBaseServer.php @@ -3,8 +3,6 @@ namespace Tests\E2E\Services\Teams; use Tests\E2E\Client; -use Utopia\Database\Database; -use Utopia\Database\DateTime; use Utopia\Database\Validator\DatetimeValidator; trait TeamsBaseServer diff --git a/tests/e2e/Services/Webhooks/WebhooksBase.php b/tests/e2e/Services/Webhooks/WebhooksBase.php index e0563d612c..1afa9cdb52 100644 --- a/tests/e2e/Services/Webhooks/WebhooksBase.php +++ b/tests/e2e/Services/Webhooks/WebhooksBase.php @@ -5,7 +5,6 @@ namespace Tests\E2E\Services\Webhooks; use Appwrite\Tests\Retry; use CURLFile; use Tests\E2E\Client; -use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; diff --git a/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php b/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php index 921952257e..aaf7901e19 100644 --- a/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php +++ b/tests/e2e/Services/Webhooks/WebhooksCustomClientTest.php @@ -7,7 +7,6 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\SideClient; -use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; use Utopia\Database\Validator\DatetimeValidator; diff --git a/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php b/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php index ca5185395d..0ccb138d44 100644 --- a/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php +++ b/tests/e2e/Services/Webhooks/WebhooksCustomServerTest.php @@ -8,7 +8,6 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; use Utopia\CLI\Console; -use Utopia\Database\DateTime; use Utopia\Database\Helpers\ID; use Utopia\Database\Helpers\Permission; use Utopia\Database\Helpers\Role; From f707221ee4d8c6983f0bc5ae260aa59b7eeab34f Mon Sep 17 00:00:00 2001 From: fogelito Date: Wed, 21 Dec 2022 11:01:47 +0200 Subject: [PATCH 32/94] stopOnFailure revert --- phpunit.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpunit.xml b/phpunit.xml index 4012c8c276..4074fe0f1c 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -6,7 +6,7 @@ convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" - stopOnFailure="false" + stopOnFailure="true" > From 94c9d68e4fe71544f1e6b237d379208f1c159fb3 Mon Sep 17 00:00:00 2001 From: fogelito Date: Wed, 21 Dec 2022 11:03:06 +0200 Subject: [PATCH 33/94] stopOnFailure revert --- phpunit.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpunit.xml b/phpunit.xml index 4074fe0f1c..4012c8c276 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -6,7 +6,7 @@ convertNoticesToExceptions="true" convertWarningsToExceptions="true" processIsolation="false" - stopOnFailure="true" + stopOnFailure="false" > From 93b489fe2cf39aa65b146a5b46dd9d95de332262 Mon Sep 17 00:00:00 2001 From: "Vincent (Wen Yu) Ge" Date: Wed, 21 Dec 2022 19:22:03 +0000 Subject: [PATCH 34/94] revert composer lock update --- composer.lock | 97 +++++++++++++++++++++++++-------------------------- 1 file changed, 47 insertions(+), 50 deletions(-) diff --git a/composer.lock b/composer.lock index d62c0131ab..e97546287f 100644 --- a/composer.lock +++ b/composer.lock @@ -801,21 +801,20 @@ "issues": "https://github.com/influxdata/influxdb-php/issues", "source": "https://github.com/influxdata/influxdb-php/tree/1.15.2" }, - "abandoned": true, "time": "2020-12-26T17:45:17+00:00" }, { "name": "laravel/pint", - "version": "v1.2.1", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "e60e2112ee779ce60f253695b273d1646a17d6f1" + "reference": "1d276e4c803397a26cc337df908f55c2a4e90d86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/e60e2112ee779ce60f253695b273d1646a17d6f1", - "reference": "e60e2112ee779ce60f253695b273d1646a17d6f1", + "url": "https://api.github.com/repos/laravel/pint/zipball/1d276e4c803397a26cc337df908f55c2a4e90d86", + "reference": "1d276e4c803397a26cc337df908f55c2a4e90d86", "shasum": "" }, "require": { @@ -827,10 +826,10 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.11.0", - "illuminate/view": "^9.32.0", - "laravel-zero/framework": "^9.2.0", - "mockery/mockery": "^1.5.1", - "nunomaduro/larastan": "^2.2.0", + "illuminate/view": "^9.27", + "laravel-zero/framework": "^9.1.3", + "mockery/mockery": "^1.5.0", + "nunomaduro/larastan": "^2.2", "nunomaduro/termwind": "^1.14.0", "pestphp/pest": "^1.22.1" }, @@ -868,7 +867,7 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2022-11-29T16:25:20+00:00" + "time": "2022-09-13T15:07:15+00:00" }, { "name": "matomo/device-detector", @@ -1462,16 +1461,16 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.2.0", + "version": "v3.1.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3" + "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3", - "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", + "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", "shasum": "" }, "require": { @@ -1480,7 +1479,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.1-dev" }, "thanks": { "name": "symfony/contracts", @@ -1509,7 +1508,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.1" }, "funding": [ { @@ -1525,7 +1524,7 @@ "type": "tidelift" } ], - "time": "2022-11-25T10:21:52+00:00" + "time": "2022-02-25T11:15:52+00:00" }, { "name": "utopia-php/abuse", @@ -1946,25 +1945,24 @@ }, { "name": "utopia-php/framework", - "version": "0.25.1", + "version": "0.25.0", "source": { "type": "git", "url": "https://github.com/utopia-php/framework.git", - "reference": "2391b397135586b2100d39e338827bef8d2f4ad0" + "reference": "c524f681254255c8204fbf7919c53bf3b4982636" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/framework/zipball/2391b397135586b2100d39e338827bef8d2f4ad0", - "reference": "2391b397135586b2100d39e338827bef8d2f4ad0", + "url": "https://api.github.com/repos/utopia-php/framework/zipball/c524f681254255c8204fbf7919c53bf3b4982636", + "reference": "c524f681254255c8204fbf7919c53bf3b4982636", "shasum": "" }, "require": { "php": ">=8.0.0" }, "require-dev": { - "laravel/pint": "^1.2", "phpunit/phpunit": "^9.5.25", - "vimeo/psalm": "4.27.0" + "vimeo/psalm": "^4.27.0" }, "type": "library", "autoload": { @@ -1984,9 +1982,9 @@ ], "support": { "issues": "https://github.com/utopia-php/framework/issues", - "source": "https://github.com/utopia-php/framework/tree/0.25.1" + "source": "https://github.com/utopia-php/framework/tree/0.25.0" }, - "time": "2022-11-23T18:22:23+00:00" + "time": "2022-11-02T09:49:57+00:00" }, { "name": "utopia-php/image", @@ -2779,16 +2777,16 @@ }, { "name": "matthiasmullie/minify", - "version": "1.3.70", + "version": "1.3.69", "source": { "type": "git", "url": "https://github.com/matthiasmullie/minify.git", - "reference": "2807d9f9bece6877577ad44acb5c801bb3ae536b" + "reference": "a61c949cccd086808063611ef9698eabe42ef22f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/2807d9f9bece6877577ad44acb5c801bb3ae536b", - "reference": "2807d9f9bece6877577ad44acb5c801bb3ae536b", + "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/a61c949cccd086808063611ef9698eabe42ef22f", + "reference": "a61c949cccd086808063611ef9698eabe42ef22f", "shasum": "" }, "require": { @@ -2797,10 +2795,9 @@ "php": ">=5.3.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": ">=2.0", - "matthiasmullie/scrapbook": ">=1.3", - "phpunit/phpunit": ">=4.8", - "squizlabs/php_codesniffer": ">=3.0" + "friendsofphp/php-cs-fixer": "~2.0", + "matthiasmullie/scrapbook": "dev-master", + "phpunit/phpunit": ">=4.8" }, "suggest": { "psr/cache-implementation": "Cache implementation to use with Minify::cache" @@ -2823,12 +2820,12 @@ { "name": "Matthias Mullie", "email": "minify@mullie.eu", - "homepage": "https://www.mullie.eu", + "homepage": "http://www.mullie.eu", "role": "Developer" } ], "description": "CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.", - "homepage": "https://github.com/matthiasmullie/minify", + "homepage": "http://www.minifier.org", "keywords": [ "JS", "css", @@ -2838,7 +2835,7 @@ ], "support": { "issues": "https://github.com/matthiasmullie/minify/issues", - "source": "https://github.com/matthiasmullie/minify/tree/1.3.70" + "source": "https://github.com/matthiasmullie/minify/tree/1.3.69" }, "funding": [ { @@ -2846,7 +2843,7 @@ "type": "github" } ], - "time": "2022-12-09T12:56:44+00:00" + "time": "2022-08-01T09:00:18+00:00" }, { "name": "matthiasmullie/path-converter", @@ -3294,21 +3291,21 @@ }, { "name": "phpspec/prophecy", - "version": "v1.16.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359" + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be8cac52a0827776ff9ccda8c381ac5b71aeb359", - "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", "shasum": "" }, "require": { "doctrine/instantiator": "^1.2", - "php": "^7.2 || 8.0.* || 8.1.* || 8.2.*", + "php": "^7.2 || ~8.0, <8.2", "phpdocumentor/reflection-docblock": "^5.2", "sebastian/comparator": "^3.0 || ^4.0", "sebastian/recursion-context": "^3.0 || ^4.0" @@ -3355,22 +3352,22 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.16.0" + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" }, - "time": "2022-11-29T15:06:56+00:00" + "time": "2021-12-08T12:19:24+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.22", + "version": "9.2.19", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "e4bf60d2220b4baaa0572986b5d69870226b06df" + "reference": "c77b56b63e3d2031bd8997fcec43c1925ae46559" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e4bf60d2220b4baaa0572986b5d69870226b06df", - "reference": "e4bf60d2220b4baaa0572986b5d69870226b06df", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c77b56b63e3d2031bd8997fcec43c1925ae46559", + "reference": "c77b56b63e3d2031bd8997fcec43c1925ae46559", "shasum": "" }, "require": { @@ -3426,7 +3423,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.22" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.19" }, "funding": [ { @@ -3434,7 +3431,7 @@ "type": "github" } ], - "time": "2022-12-18T16:40:55+00:00" + "time": "2022-11-18T07:47:47+00:00" }, { "name": "phpunit/php-file-iterator", From 1a92bf19239a6e73f8fddeb8be268a0948108146 Mon Sep 17 00:00:00 2001 From: "Vincent (Wen Yu) Ge" Date: Thu, 22 Dec 2022 23:00:29 +0000 Subject: [PATCH 35/94] regen specs --- app/config/specs/open-api3-1.1.x-client.json | 2 +- app/config/specs/open-api3-1.1.x-console.json | 2 +- app/config/specs/open-api3-1.1.x-server.json | 2 +- app/config/specs/swagger2-1.1.x-client.json | 2 +- app/config/specs/swagger2-1.1.x-console.json | 2 +- app/config/specs/swagger2-1.1.x-server.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/config/specs/open-api3-1.1.x-client.json b/app/config/specs/open-api3-1.1.x-client.json index 70b5a99cd3..4faefbdba2 100644 --- a/app/config/specs/open-api3-1.1.x-client.json +++ b/app/config/specs/open-api3-1.1.x-client.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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":"1.1.2","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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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-1.1.x-console.json b/app/config/specs/open-api3-1.1.x-console.json index 1788e6fc9f..1412b5e8d3 100644 --- a/app/config/specs/open-api3-1.1.x-console.json +++ b/app/config/specs/open-api3-1.1.x-console.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":192,"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":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":191,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"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","region"]}}}}}},"\/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":103,"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":105,"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":111,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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":110,"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":129,"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":128,"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":130,"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":132,"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":131,"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":119,"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":118,"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. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"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":120,"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":121,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":122,"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":107,"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]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":124,"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":123,"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":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":125,"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":126,"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":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":127,"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":106,"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":104,"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":113,"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":112,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":114,"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":115,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":117,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":116,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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":146,"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":147,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":159,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":186,"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.1.2","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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":192,"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":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":191,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"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":103,"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":105,"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":111,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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":110,"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":129,"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":128,"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":130,"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":132,"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":131,"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":119,"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":118,"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. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"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":120,"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":121,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":122,"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":107,"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]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":124,"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":123,"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":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":125,"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":126,"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":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":127,"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":106,"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":104,"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":113,"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":112,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":114,"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":115,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":117,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":116,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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":146,"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":147,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":159,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":186,"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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-1.1.x-server.json b/app/config/specs/open-api3-1.1.x-server.json index e981a7abf8..80306a0715 100644 --- a/app/config/specs/open-api3-1.1.x-server.json +++ b/app/config/specs/open-api3-1.1.x-server.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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":"1.1.2","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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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-1.1.x-client.json b/app/config/specs/swagger2-1.1.x-client.json index 6a213bbf4d..f803638cdd 100644 --- a/app/config/specs/swagger2-1.1.x-client.json +++ b/app/config/specs/swagger2-1.1.x-client.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.1.2","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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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-1.1.x-console.json b/app/config/specs/swagger2-1.1.x-console.json index 8ed4993f3a..c95fd45b4f 100644 --- a/app/config/specs/swagger2-1.1.x-console.json +++ b/app/config/specs/swagger2-1.1.x-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":192,"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":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":191,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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]"},"region":{"type":"string","description":"Project Region.","default":null,"x-example":"default"},"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","region"]}}]}},"\/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":103,"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":105,"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":111,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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":110,"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":129,"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":128,"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":130,"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":132,"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":131,"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":119,"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":118,"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. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":120,"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":121,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":122,"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":107,"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":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":124,"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":123,"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":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":125,"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":126,"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":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":127,"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":106,"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":104,"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":113,"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":112,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":114,"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":115,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":117,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":116,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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":146,"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":147,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":159,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":186,"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.1.2","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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":192,"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":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":191,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default"},"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":103,"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":105,"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":111,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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":110,"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":129,"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":128,"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":130,"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":132,"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":131,"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":119,"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":118,"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. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":120,"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":121,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":122,"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":107,"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":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":124,"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":123,"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":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":125,"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":126,"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":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":127,"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":106,"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":104,"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":113,"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":112,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":114,"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":115,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":117,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":116,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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":146,"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":147,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":159,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":186,"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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-1.1.x-server.json b/app/config/specs/swagger2-1.1.x-server.json index 4bf56f9d39..0665d0d87c 100644 --- a/app/config/specs/swagger2-1.1.x-server.json +++ b/app/config/specs/swagger2-1.1.x-server.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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":"1.1.2","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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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 From 87c7e76a1609319798e6b80498a639f5bde26266 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 9 Jan 2023 16:20:03 +0545 Subject: [PATCH 36/94] Oauth2 check if provider is enabled --- app/controllers/api/account.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index af5c8e4f53..0ad8c5b56a 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -280,6 +280,12 @@ App::get('/v1/account/sessions/oauth2/:provider') $protocol = $request->getProtocol(); $callback = $protocol . '://' . $request->getHostname() . '/v1/account/sessions/oauth2/callback/' . $provider . '/' . $project->getId(); + $providerEnabled = $project->getAttribute('authProviders', [])[$provider.'Enabled'] ?? false; + + if (!$providerEnabled) { + throw new Exception(Exception::PROJECT_PROVIDER_DISABLED, 'This provider is disabled. Please enable the provider from your ' . APP_NAME . ' console to continue.'); + } + $appId = $project->getAttribute('authProviders', [])[$provider . 'Appid'] ?? ''; $appSecret = $project->getAttribute('authProviders', [])[$provider . 'Secret'] ?? '{}'; From b238a1ef2d3a85bd9aa59dd2497edb2df4136105 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 9 Jan 2023 10:44:28 +0000 Subject: [PATCH 37/94] fix format --- app/controllers/api/account.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 0ad8c5b56a..40e8c11f6e 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -280,12 +280,12 @@ App::get('/v1/account/sessions/oauth2/:provider') $protocol = $request->getProtocol(); $callback = $protocol . '://' . $request->getHostname() . '/v1/account/sessions/oauth2/callback/' . $provider . '/' . $project->getId(); - $providerEnabled = $project->getAttribute('authProviders', [])[$provider.'Enabled'] ?? false; - + $providerEnabled = $project->getAttribute('authProviders', [])[$provider . 'Enabled'] ?? false; + if (!$providerEnabled) { throw new Exception(Exception::PROJECT_PROVIDER_DISABLED, 'This provider is disabled. Please enable the provider from your ' . APP_NAME . ' console to continue.'); } - + $appId = $project->getAttribute('authProviders', [])[$provider . 'Appid'] ?? ''; $appSecret = $project->getAttribute('authProviders', [])[$provider . 'Secret'] ?? '{}'; From d2ca803753b03ee22e3f641935a1533668d3bfe2 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 10 Jan 2023 04:52:21 +0000 Subject: [PATCH 38/94] add provider enabled check in the redirect --- app/controllers/api/account.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index 40e8c11f6e..a80050bbfa 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -400,6 +400,11 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect') $validateURL = new URL(); $appId = $project->getAttribute('authProviders', [])[$provider . 'Appid'] ?? ''; $appSecret = $project->getAttribute('authProviders', [])[$provider . 'Secret'] ?? '{}'; + $providerEnabled = $project->getAttribute('authProviders', [])[$provider . 'Enabled'] ?? false; + + if (!$providerEnabled) { + throw new Exception(Exception::PROJECT_PROVIDER_DISABLED, 'This provider is disabled. Please enable the provider from your ' . APP_NAME . ' console to continue.'); + } if (!empty($appSecret) && isset($appSecret['version'])) { $key = App::getEnv('_APP_OPENSSL_KEY_V' . $appSecret['version']); From da8af68e1e7398a50ec550f3bb1ef2521df5da05 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Wed, 11 Jan 2023 17:20:43 +1300 Subject: [PATCH 39/94] Fix deletes worker not deleting database collections --- app/workers/deletes.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/workers/deletes.php b/app/workers/deletes.php index 5dc7e8d737..e5622fec77 100644 --- a/app/workers/deletes.php +++ b/app/workers/deletes.php @@ -44,9 +44,6 @@ class DeletesV1 extends Worker case DELETE_TYPE_DATABASES: $this->deleteDatabase($document, $project->getId()); break; - case DELETE_TYPE_COLLECTIONS: - $this->deleteCollection($document, $project->getId()); - break; case DELETE_TYPE_PROJECTS: $this->deleteProject($document); break; @@ -66,6 +63,10 @@ class DeletesV1 extends Worker $this->deleteBucket($document, $project->getId()); break; default: + if (\str_starts_with($document->getCollection(), 'database_')) { + $this->deleteCollection($document, $project->getId()); + break; + } Console::error('No lazy delete operation available for document of type: ' . $document->getCollection()); break; } From 4b0ef4598bd0eaae87d3b80dde7e81481ec1e0ac Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Wed, 11 Jan 2023 19:37:06 +1300 Subject: [PATCH 40/94] Fix deletes worker not deleting project database tables --- app/workers/deletes.php | 50 +++++++++++++++--- src/Appwrite/Resque/Worker.php | 92 ++++++++++++++++++++++------------ 2 files changed, 105 insertions(+), 37 deletions(-) diff --git a/app/workers/deletes.php b/app/workers/deletes.php index 5dc7e8d737..ca5299e8af 100644 --- a/app/workers/deletes.php +++ b/app/workers/deletes.php @@ -172,6 +172,7 @@ class DeletesV1 extends Worker /** * @param Document $document database document * @param string $projectId + * @throws Exception */ protected function deleteDatabase(Document $document, string $projectId): void { @@ -191,6 +192,7 @@ class DeletesV1 extends Worker /** * @param Document $document teams document * @param string $projectId + * @throws Exception */ protected function deleteCollection(Document $document, string $projectId): void { @@ -217,6 +219,7 @@ class DeletesV1 extends Worker /** * @param string $hourlyUsageRetentionDatetime + * @throws Exception */ protected function deleteUsageStats(string $hourlyUsageRetentionDatetime) { @@ -232,6 +235,7 @@ class DeletesV1 extends Worker /** * @param Document $document teams document * @param string $projectId + * @throws Exception */ protected function deleteMemberships(Document $document, string $projectId): void { @@ -245,13 +249,37 @@ class DeletesV1 extends Worker /** * @param Document $document project document + * @throws Exception */ protected function deleteProject(Document $document): void { - $projectId = $document->getId(); + // Delete project tables + $dbForProject = $this->getProjectDBFromDocument($document); - // Delete all DBs - $this->getProjectDB($projectId)->delete($projectId); + $limit = 50; + $offset = 0; + + while (true) { + $collections = $dbForProject->listCollections($limit, $offset); + + if (empty($collections)) { + break; + } + + foreach ($collections as $collection) { + $dbForProject->deleteCollection($collection->getId()); + } + + $offset += $limit; + } + + // Delete metadata tables + try { + $dbForProject->deleteCollection('_metadata'); + } catch (Exception) { + // Ignore: deleteCollection tries to delete a metadata entry after the collection is deleted, + // which will throw an exception here because the metadata collection is already deleted. + } // Delete all storage directories $uploads = $this->getFilesDevice($document->getId()); @@ -264,6 +292,7 @@ class DeletesV1 extends Worker /** * @param Document $document user document * @param string $projectId + * @throws Exception */ protected function deleteUser(Document $document, string $projectId): void { @@ -305,6 +334,7 @@ class DeletesV1 extends Worker /** * @param string $datetime + * @throws Exception */ protected function deleteExecutionLogs(string $datetime): void { @@ -337,6 +367,7 @@ class DeletesV1 extends Worker /** * @param string $datetime + * @throws Exception */ protected function deleteRealtimeUsage(string $datetime): void { @@ -393,6 +424,7 @@ class DeletesV1 extends Worker /** * @param string $resource * @param string $projectId + * @throws Exception */ protected function deleteAuditLogsByResource(string $resource, string $projectId): void { @@ -406,6 +438,7 @@ class DeletesV1 extends Worker /** * @param Document $document function document * @param string $projectId + * @throws Exception */ protected function deleteFunction(Document $document, string $projectId): void { @@ -479,6 +512,7 @@ class DeletesV1 extends Worker /** * @param Document $document deployment document * @param string $projectId + * @throws Exception */ protected function deleteDeployment(Document $document, string $projectId): void { @@ -528,9 +562,10 @@ class DeletesV1 extends Worker /** * @param Document $document to be deleted * @param Database $database to delete it from - * @param callable $callback to perform after document is deleted + * @param callable|null $callback to perform after document is deleted * * @return bool + * @throws \Utopia\Database\Exception\Authorization */ protected function deleteById(Document $document, Database $database, callable $callback = null): bool { @@ -550,6 +585,7 @@ class DeletesV1 extends Worker /** * @param callable $callback + * @throws Exception */ protected function deleteForProjectIds(callable $callback): void { @@ -584,9 +620,10 @@ class DeletesV1 extends Worker /** * @param string $collection collectionID - * @param Query[] $queries + * @param array $queries * @param Database $database - * @param callable $callback + * @param callable|null $callback + * @throws Exception */ protected function deleteByGroup(string $collection, array $queries, Database $database, callable $callback = null): void { @@ -620,6 +657,7 @@ class DeletesV1 extends Worker /** * @param Document $document certificates document + * @throws \Utopia\Database\Exception\Authorization */ protected function deleteCertificates(Document $document): void { diff --git a/src/Appwrite/Resque/Worker.php b/src/Appwrite/Resque/Worker.php index dd7cebd084..b01bace9ea 100644 --- a/src/Appwrite/Resque/Worker.php +++ b/src/Appwrite/Resque/Worker.php @@ -2,22 +2,23 @@ namespace Appwrite\Resque; +use Exception; use Utopia\App; -use Utopia\Cache\Cache; use Utopia\Cache\Adapter\Redis as RedisCache; +use Utopia\Cache\Cache; use Utopia\CLI\Console; -use Utopia\Database\Database; use Utopia\Database\Adapter\MariaDB; +use Utopia\Database\Database; +use Utopia\Database\Document; +use Utopia\Database\Validator\Authorization; use Utopia\Storage\Device; -use Utopia\Storage\Storage; -use Utopia\Storage\Device\Local; +use Utopia\Storage\Device\Backblaze; use Utopia\Storage\Device\DOSpaces; use Utopia\Storage\Device\Linode; -use Utopia\Storage\Device\Wasabi; -use Utopia\Storage\Device\Backblaze; +use Utopia\Storage\Device\Local; use Utopia\Storage\Device\S3; -use Exception; -use Utopia\Database\Validator\Authorization; +use Utopia\Storage\Device\Wasabi; +use Utopia\Storage\Storage; abstract class Worker { @@ -53,7 +54,7 @@ abstract class Worker * @return void * @throws \Exception|\Throwable */ - public function init() + public function init(): void { throw new Exception("Please implement init method in worker"); } @@ -65,7 +66,7 @@ abstract class Worker * @return void * @throws \Exception|\Throwable */ - public function run() + public function run(): void { throw new Exception("Please implement run method in worker"); } @@ -77,7 +78,7 @@ abstract class Worker * @return void * @throws \Exception|\Throwable */ - public function shutdown() + public function shutdown(): void { throw new Exception("Please implement shutdown method in worker"); } @@ -151,17 +152,18 @@ abstract class Worker /** * Register callback. Will be executed when error occurs. * @param callable $callback - * @param Throwable $error - * @return self + * @return void */ public static function error(callable $callback): void { - \array_push(self::$errorCallbacks, $callback); + self::$errorCallbacks[] = $callback; } + /** * Get internal project database * @param string $projectId * @return Database + * @throws Exception */ protected function getProjectDB(string $projectId): Database { @@ -177,9 +179,23 @@ abstract class Worker return $this->getDB(self::DATABASE_PROJECT, $projectId, $project->getInternalId()); } + /** + * Get internal project database given the project document + * + * Allows avoiding race conditions when modifying the projects collection + * @param Document $project + * @return Database + * @throws Exception + */ + protected function getProjectDBFromDocument(Document $project): Database + { + return $this->getDB(self::DATABASE_PROJECT, project: $project); + } + /** * Get console database * @return Database + * @throws Exception */ protected function getConsoleDB(): Database { @@ -187,24 +203,35 @@ abstract class Worker } /** - * Get console database - * @param string $type One of (internal, external, console) - * @param string $projectId of internal or external DB + * Get database + * @param string $type One of (project, console) + * @param string $projectId of project or console DB + * @param string $projectInternalId + * @param Document|null $project * @return Database + * @throws Exception */ - private function getDB(string $type, string $projectId = '', string $projectInternalId = ''): Database - { + private function getDB( + string $type, + string $projectId = '', + string $projectInternalId = '', + ?Document $project = null + ): Database { global $register; - $namespace = ''; $sleep = DATABASE_RECONNECT_SLEEP; // overwritten when necessary + if ($project !== null) { + $projectId = $project->getId(); + $projectInternalId = $project->getInternalId(); + } + switch ($type) { case self::DATABASE_PROJECT: if (!$projectId) { throw new \Exception('ProjectID not provided - cannot get database'); } - $namespace = "_{$projectInternalId}"; + $namespace = "_$projectInternalId"; break; case self::DATABASE_CONSOLE: $namespace = "_console"; @@ -212,12 +239,11 @@ abstract class Worker break; default: throw new \Exception('Unknown database type: ' . $type); - break; } $attempts = 0; - do { + while (true) { try { $attempts++; $cache = new Cache(new RedisCache($register->get('cache'))); @@ -225,8 +251,12 @@ abstract class Worker $database->setDefaultDatabase(App::getEnv('_APP_DB_SCHEMA', 'appwrite')); $database->setNamespace($namespace); // Main DB - if (!empty($projectId) && !$database->getDocument('projects', $projectId)->isEmpty()) { - throw new \Exception("Project does not exist: {$projectId}"); + if ( + $project === null + && !empty($projectId) + && !$database->getDocument('projects', $projectId)->isEmpty() + ) { + throw new \Exception("Project does not exist: $projectId"); } if ($type === self::DATABASE_CONSOLE && !$database->exists($database->getDefaultDatabase(), Database::METADATA)) { @@ -235,13 +265,13 @@ abstract class Worker break; // leave loop if successful } catch (\Exception $e) { - Console::warning("Database not ready. Retrying connection ({$attempts})..."); + Console::warning("Database not ready. Retrying connection ($attempts)..."); if ($attempts >= DATABASE_RECONNECT_MAX_ATTEMPTS) { throw new \Exception('Failed to connect to database: ' . $e->getMessage()); } sleep($sleep); } - } while ($attempts < DATABASE_RECONNECT_MAX_ATTEMPTS); + } return $database; } @@ -251,7 +281,7 @@ abstract class Worker * @param string $projectId of the project * @return Device */ - protected function getFunctionsDevice($projectId): Device + protected function getFunctionsDevice(string $projectId): Device { return $this->getDevice(APP_STORAGE_FUNCTIONS . '/app-' . $projectId); } @@ -261,7 +291,7 @@ abstract class Worker * @param string $projectId of the project * @return Device */ - protected function getFilesDevice($projectId): Device + protected function getFilesDevice(string $projectId): Device { return $this->getDevice(APP_STORAGE_UPLOADS . '/app-' . $projectId); } @@ -272,7 +302,7 @@ abstract class Worker * @param string $projectId of the project * @return Device */ - protected function getBuildsDevice($projectId): Device + protected function getBuildsDevice(string $projectId): Device { return $this->getDevice(APP_STORAGE_BUILDS . '/app-' . $projectId); } @@ -282,7 +312,7 @@ abstract class Worker * @param string $root path of the device * @return Device */ - public function getDevice($root): Device + public function getDevice(string $root): Device { switch (App::getEnv('_APP_STORAGE_DEVICE', Storage::DEVICE_LOCAL)) { case Storage::DEVICE_LOCAL: From 2b4dbfb4b9377b522c97ad012eacbd13df529090 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Wed, 11 Jan 2023 11:41:26 -0800 Subject: [PATCH 41/94] Convert _APP_STORAGE_DEVICE env var to lowercase This is done for backwards compatibility. Up to utopia-php/storage version 0.12.X, the devices were not lowercase. Starting 0.13.X, they are all converted to lowercase, but people would still have the old case in their .env file. This change makes the value check insensitive so that the value from older versions still works. --- app/config/variables.php | 4 ++-- app/controllers/api/storage.php | 2 +- app/executor.php | 2 +- app/init.php | 2 +- app/workers/builds.php | 2 +- src/Appwrite/Resque/Worker.php | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/config/variables.php b/app/config/variables.php index 19139c0d75..193e167b8f 100644 --- a/app/config/variables.php +++ b/app/config/variables.php @@ -482,9 +482,9 @@ return [ ], [ 'name' => '_APP_STORAGE_DEVICE', - 'description' => 'Select default storage device. The default value is \'Local\'. List of supported adapters are \'Local\', \'S3\', \'DOSpaces\', \'Backblaze\', \'Linode\' and \'Wasabi\'.', + 'description' => 'Select default storage device. The default value is \'local\'. List of supported adapters are \'local\', \'s3\', \'dospaces\', \'backblaze\', \'linode\' and \'wasabi\'.', 'introduction' => '0.13.0', - 'default' => 'Local', + 'default' => 'local', 'required' => false, 'question' => '', ], diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 1ea72f49e8..6ecf93e25e 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -501,7 +501,7 @@ App::post('/v1/storage/buckets/:bucketId/files') } if ($chunksUploaded === $chunks) { - if (App::getEnv('_APP_STORAGE_ANTIVIRUS') === 'enabled' && $bucket->getAttribute('antivirus', true) && $fileSize <= APP_LIMIT_ANTIVIRUS && App::getEnv('_APP_STORAGE_DEVICE', Storage::DEVICE_LOCAL) === Storage::DEVICE_LOCAL) { + if (App::getEnv('_APP_STORAGE_ANTIVIRUS') === 'enabled' && $bucket->getAttribute('antivirus', true) && $fileSize <= APP_LIMIT_ANTIVIRUS && strtolower(App::getEnv('_APP_STORAGE_DEVICE', Storage::DEVICE_LOCAL)) === Storage::DEVICE_LOCAL) { $antivirus = new Network( App::getEnv('_APP_STORAGE_ANTIVIRUS_HOST', 'clamav'), (int) App::getEnv('_APP_STORAGE_ANTIVIRUS_PORT', 3310) diff --git a/app/executor.php b/app/executor.php index fba8c4c416..316794b929 100644 --- a/app/executor.php +++ b/app/executor.php @@ -119,7 +119,7 @@ function logError(Throwable $error, string $action, Utopia\Route $route = null) function getStorageDevice($root): Device { - switch (App::getEnv('_APP_STORAGE_DEVICE', Storage::DEVICE_LOCAL)) { + switch (strtolower(App::getEnv('_APP_STORAGE_DEVICE', Storage::DEVICE_LOCAL))) { case Storage::DEVICE_LOCAL: default: return new Local($root); diff --git a/app/init.php b/app/init.php index b05950d679..427ffa822f 100644 --- a/app/init.php +++ b/app/init.php @@ -968,7 +968,7 @@ App::setResource('deviceBuilds', function ($project) { function getDevice($root): Device { - switch (App::getEnv('_APP_STORAGE_DEVICE', Storage::DEVICE_LOCAL)) { + switch (strtolower(App::getEnv('_APP_STORAGE_DEVICE', Storage::DEVICE_LOCAL))) { case Storage::DEVICE_LOCAL: default: return new Local($root); diff --git a/app/workers/builds.php b/app/workers/builds.php index 5f33ed4010..fdd633f84a 100644 --- a/app/workers/builds.php +++ b/app/workers/builds.php @@ -91,7 +91,7 @@ class BuildsV1 extends Worker 'outputPath' => '', 'runtime' => $function->getAttribute('runtime'), 'source' => $deployment->getAttribute('path'), - 'sourceType' => App::getEnv('_APP_STORAGE_DEVICE', Storage::DEVICE_LOCAL), + 'sourceType' => strtolower(App::getEnv('_APP_STORAGE_DEVICE', Storage::DEVICE_LOCAL)), 'stdout' => '', 'stderr' => '', 'endTime' => null, diff --git a/src/Appwrite/Resque/Worker.php b/src/Appwrite/Resque/Worker.php index dd7cebd084..1e9918a156 100644 --- a/src/Appwrite/Resque/Worker.php +++ b/src/Appwrite/Resque/Worker.php @@ -284,7 +284,7 @@ abstract class Worker */ public function getDevice($root): Device { - switch (App::getEnv('_APP_STORAGE_DEVICE', Storage::DEVICE_LOCAL)) { + switch (strtolower(App::getEnv('_APP_STORAGE_DEVICE', Storage::DEVICE_LOCAL))) { case Storage::DEVICE_LOCAL: default: return new Local($root); From be77b105494d7d43d32c73bbfd3fc0151960a374 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Wed, 11 Jan 2023 15:38:09 -0800 Subject: [PATCH 42/94] Add flutter-web as a platform type Having a dedicated type for flutter-web will allow us to differentiate between Flutter Web and Web in the Appwrite Console. --- CHANGES.md | 8 ++ app/controllers/api/projects.php | 2 +- app/init.php | 9 ++- src/Appwrite/Network/Validator/Origin.php | 2 + .../Utopia/Response/Model/Platform.php | 2 +- .../Projects/ProjectsConsoleClientTest.php | 77 ++++++++++++++++++- tests/unit/Network/Validators/OriginTest.php | 16 +++- 7 files changed, 106 insertions(+), 10 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 55c0e4e2ab..370c455963 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,11 @@ +# Version 1.2.1 +## Features + +## Changes + +## Bugs +- Add flutter-web as a platform type [#4992](https://github.com/appwrite/appwrite/pull/4992) + # Version 1.2.0 ## Features - Added GraphQL API [#974](https://github.com/appwrite/appwrite/pull/974) diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index f8e07c12f9..10a6f55c08 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -1115,7 +1115,7 @@ App::post('/v1/projects/:projectId/platforms') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_PLATFORM) ->param('projectId', '', new UID(), 'Project unique ID.') - ->param('type', null, new WhiteList([Origin::CLIENT_TYPE_WEB, Origin::CLIENT_TYPE_FLUTTER_IOS, Origin::CLIENT_TYPE_FLUTTER_ANDROID, Origin::CLIENT_TYPE_FLUTTER_LINUX, Origin::CLIENT_TYPE_FLUTTER_MACOS, Origin::CLIENT_TYPE_FLUTTER_WINDOWS, Origin::CLIENT_TYPE_APPLE_IOS, Origin::CLIENT_TYPE_APPLE_MACOS, Origin::CLIENT_TYPE_APPLE_WATCHOS, Origin::CLIENT_TYPE_APPLE_TVOS, Origin::CLIENT_TYPE_ANDROID, Origin::CLIENT_TYPE_UNITY], true), 'Platform type.') + ->param('type', null, new WhiteList([Origin::CLIENT_TYPE_WEB, Origin::CLIENT_TYPE_FLUTTER_WEB, Origin::CLIENT_TYPE_FLUTTER_IOS, Origin::CLIENT_TYPE_FLUTTER_ANDROID, Origin::CLIENT_TYPE_FLUTTER_LINUX, Origin::CLIENT_TYPE_FLUTTER_MACOS, Origin::CLIENT_TYPE_FLUTTER_WINDOWS, Origin::CLIENT_TYPE_APPLE_IOS, Origin::CLIENT_TYPE_APPLE_MACOS, Origin::CLIENT_TYPE_APPLE_WATCHOS, Origin::CLIENT_TYPE_APPLE_TVOS, Origin::CLIENT_TYPE_ANDROID, Origin::CLIENT_TYPE_UNITY], true), 'Platform type.') ->param('name', null, new Text(128), 'Platform name. Max length: 128 chars.') ->param('key', '', new Text(256), 'Package name for Android or bundle ID for iOS or macOS. Max length: 256 chars.', true) ->param('store', '', new Text(256), 'App store or Google Play store ID. Max length: 256 chars.', true) diff --git a/app/init.php b/app/init.php index b05950d679..14072b0dfe 100644 --- a/app/init.php +++ b/app/init.php @@ -34,6 +34,7 @@ use Appwrite\GraphQL\Promises\Adapter\Swoole; use Appwrite\GraphQL\Schema; use Appwrite\Network\Validator\Email; use Appwrite\Network\Validator\IP; +use Appwrite\Network\Validator\Origin; use Appwrite\Network\Validator\URL; use Appwrite\OpenSSL\OpenSSL; use Appwrite\Usage\Stats; @@ -754,7 +755,7 @@ App::setResource('clients', function ($request, $console, $project) { $console->setAttribute('platforms', [ // Always allow current host '$collection' => ID::custom('platforms'), 'name' => 'Current Host', - 'type' => 'web', + 'type' => Origin::CLIENT_TYPE_WEB, 'hostname' => $request->getHostname(), ], Document::SET_TYPE_APPEND); @@ -766,7 +767,7 @@ App::setResource('clients', function ($request, $console, $project) { fn ($node) => $node['hostname'], \array_filter( $console->getAttribute('platforms', []), - fn ($node) => (isset($node['type']) && $node['type'] === 'web' && isset($node['hostname']) && !empty($node['hostname'])) + fn ($node) => (isset($node['type']) && ($node['type'] === Origin::CLIENT_TYPE_WEB) && isset($node['hostname']) && !empty($node['hostname'])) ) ); @@ -777,7 +778,7 @@ App::setResource('clients', function ($request, $console, $project) { fn ($node) => $node['hostname'], \array_filter( $project->getAttribute('platforms', []), - fn ($node) => (isset($node['type']) && $node['type'] === 'web' && isset($node['hostname']) && !empty($node['hostname'])) + fn ($node) => (isset($node['type']) && ($node['type'] === Origin::CLIENT_TYPE_WEB || $node['type'] === Origin::CLIENT_TYPE_FLUTTER_WEB) && isset($node['hostname']) && !empty($node['hostname'])) ) ) ) @@ -910,7 +911,7 @@ App::setResource('console', function () { [ '$collection' => ID::custom('platforms'), 'name' => 'Localhost', - 'type' => 'web', + 'type' => Origin::CLIENT_TYPE_WEB, 'hostname' => 'localhost', ], // Current host is added on app init ], diff --git a/src/Appwrite/Network/Validator/Origin.php b/src/Appwrite/Network/Validator/Origin.php index 9ee30a26ad..3c3fff3ccc 100644 --- a/src/Appwrite/Network/Validator/Origin.php +++ b/src/Appwrite/Network/Validator/Origin.php @@ -14,6 +14,7 @@ class Origin extends Validator public const CLIENT_TYPE_FLUTTER_MACOS = 'flutter-macos'; public const CLIENT_TYPE_FLUTTER_WINDOWS = 'flutter-windows'; public const CLIENT_TYPE_FLUTTER_LINUX = 'flutter-linux'; + public const CLIENT_TYPE_FLUTTER_WEB = 'flutter-web'; public const CLIENT_TYPE_APPLE_IOS = 'apple-ios'; public const CLIENT_TYPE_APPLE_MACOS = 'apple-macos'; public const CLIENT_TYPE_APPLE_WATCHOS = 'apple-watchos'; @@ -69,6 +70,7 @@ class Origin extends Validator switch ($type) { case self::CLIENT_TYPE_WEB: + case self::CLIENT_TYPE_FLUTTER_WEB: $this->clients[] = (isset($platform['hostname'])) ? $platform['hostname'] : ''; break; diff --git a/src/Appwrite/Utopia/Response/Model/Platform.php b/src/Appwrite/Utopia/Response/Model/Platform.php index 013c2d3e42..fa105299ef 100644 --- a/src/Appwrite/Utopia/Response/Model/Platform.php +++ b/src/Appwrite/Utopia/Response/Model/Platform.php @@ -43,7 +43,7 @@ class Platform extends Model 'type' => self::TYPE_STRING, 'description' => 'Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.', 'default' => '', - 'example' => 'My Web App', + 'example' => 'web', ]) ->addRule('key', [ 'type' => self::TYPE_STRING, diff --git a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php index 5f0915aa05..0766da77d9 100644 --- a/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php +++ b/tests/e2e/Services/Projects/ProjectsConsoleClientTest.php @@ -1906,6 +1906,27 @@ class ProjectsConsoleClientTest extends Scope $data = array_merge($data, ['platformFultterAndroidId' => $response['body']['$id']]); + $response = $this->client->call(Client::METHOD_POST, '/projects/' . $id . '/platforms', array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'type' => 'flutter-web', + 'name' => 'Flutter App (Web)', + 'key' => '', + 'store' => '', + 'hostname' => 'flutter.appwrite.io', + ]); + + $this->assertEquals(201, $response['headers']['status-code']); + $this->assertNotEmpty($response['body']['$id']); + $this->assertEquals('flutter-web', $response['body']['type']); + $this->assertEquals('Flutter App (Web)', $response['body']['name']); + $this->assertEquals('', $response['body']['key']); + $this->assertEquals('', $response['body']['store']); + $this->assertEquals('flutter.appwrite.io', $response['body']['hostname']); + + $data = array_merge($data, ['platformFultterWebId' => $response['body']['$id']]); + $response = $this->client->call(Client::METHOD_POST, '/projects/' . $id . '/platforms', array_merge([ 'content-type' => 'application/json', 'x-appwrite-project' => $this->getProject()['$id'], @@ -2024,7 +2045,7 @@ class ProjectsConsoleClientTest extends Scope ], $this->getHeaders()), []); $this->assertEquals(200, $response['headers']['status-code']); - $this->assertEquals(7, $response['body']['total']); + $this->assertEquals(8, $response['body']['total']); /** * Test for FAILURE @@ -2088,6 +2109,22 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals('', $response['body']['store']); $this->assertEquals('', $response['body']['hostname']); + $platformFultterWebId = $data['platformFultterWebId'] ?? ''; + + $response = $this->client->call(Client::METHOD_GET, '/projects/' . $id . '/platforms/' . $platformFultterWebId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), []); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertNotEmpty($response['body']['$id']); + $this->assertEquals($platformFultterWebId, $response['body']['$id']); + $this->assertEquals('flutter-web', $response['body']['type']); + $this->assertEquals('Flutter App (Web)', $response['body']['name']); + $this->assertEquals('', $response['body']['key']); + $this->assertEquals('', $response['body']['store']); + $this->assertEquals('flutter.appwrite.io', $response['body']['hostname']); + $platformAppleIosId = $data['platformAppleIosId'] ?? ''; $response = $this->client->call(Client::METHOD_GET, '/projects/' . $id . '/platforms/' . $platformAppleIosId, array_merge([ @@ -2235,6 +2272,27 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals('', $response['body']['store']); $this->assertEquals('', $response['body']['hostname']); + $platformFultterWebId = $data['platformFultterWebId'] ?? ''; + + $response = $this->client->call(Client::METHOD_PUT, '/projects/' . $id . '/platforms/' . $platformFultterWebId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), [ + 'name' => 'Flutter App (Web) 2', + 'key' => '', + 'store' => '', + 'hostname' => 'flutter2.appwrite.io', + ]); + + $this->assertEquals(200, $response['headers']['status-code']); + $this->assertNotEmpty($response['body']['$id']); + $this->assertEquals($platformFultterWebId, $response['body']['$id']); + $this->assertEquals('flutter-web', $response['body']['type']); + $this->assertEquals('Flutter App (Web) 2', $response['body']['name']); + $this->assertEquals('', $response['body']['key']); + $this->assertEquals('', $response['body']['store']); + $this->assertEquals('flutter2.appwrite.io', $response['body']['hostname']); + $platformAppleIosId = $data['platformAppleIosId'] ?? ''; $response = $this->client->call(Client::METHOD_PUT, '/projects/' . $id . '/platforms/' . $platformAppleIosId, array_merge([ @@ -2395,6 +2453,23 @@ class ProjectsConsoleClientTest extends Scope $this->assertEquals(404, $response['headers']['status-code']); + $platformFultterWebId = $data['platformFultterWebId'] ?? ''; + + $response = $this->client->call(Client::METHOD_DELETE, '/projects/' . $id . '/platforms/' . $platformFultterWebId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), []); + + $this->assertEquals(204, $response['headers']['status-code']); + $this->assertEmpty($response['body']); + + $response = $this->client->call(Client::METHOD_GET, '/projects/' . $id . '/platforms/' . $platformFultterWebId, array_merge([ + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ], $this->getHeaders()), []); + + $this->assertEquals(404, $response['headers']['status-code']); + $platformAppleIosId = $data['platformAppleIosId'] ?? ''; $response = $this->client->call(Client::METHOD_DELETE, '/projects/' . $id . '/platforms/' . $platformAppleIosId, array_merge([ diff --git a/tests/unit/Network/Validators/OriginTest.php b/tests/unit/Network/Validators/OriginTest.php index 2392ae4cfa..cfbccfafdf 100644 --- a/tests/unit/Network/Validators/OriginTest.php +++ b/tests/unit/Network/Validators/OriginTest.php @@ -14,21 +14,27 @@ class OriginTest extends TestCase [ '$collection' => ID::custom('platforms'), 'name' => 'Production', - 'type' => 'web', + 'type' => Origin::CLIENT_TYPE_WEB, 'hostname' => 'appwrite.io', ], [ '$collection' => ID::custom('platforms'), 'name' => 'Development', - 'type' => 'web', + 'type' => Origin::CLIENT_TYPE_WEB, 'hostname' => 'appwrite.test', ], [ '$collection' => ID::custom('platforms'), 'name' => 'Localhost', - 'type' => 'web', + 'type' => Origin::CLIENT_TYPE_WEB, 'hostname' => 'localhost', ], + [ + '$collection' => ID::custom('platforms'), + 'name' => 'Flutter', + 'type' => Origin::CLIENT_TYPE_FLUTTER_WEB, + 'hostname' => 'appwrite.flutter', + ], ]); $this->assertEquals($validator->isValid('https://localhost'), true); @@ -43,6 +49,10 @@ class OriginTest extends TestCase $this->assertEquals($validator->isValid('http://appwrite.test'), true); $this->assertEquals($validator->isValid('http://appwrite.test:80'), true); + $this->assertEquals($validator->isValid('https://appwrite.flutter'), true); + $this->assertEquals($validator->isValid('http://appwrite.flutter'), true); + $this->assertEquals($validator->isValid('http://appwrite.flutter:80'), true); + $this->assertEquals($validator->isValid('https://example.com'), false); $this->assertEquals($validator->isValid('http://example.com'), false); $this->assertEquals($validator->isValid('http://example.com:80'), false); From c9664e2d19dc85d7b734be10c919d5c2b755a4ea Mon Sep 17 00:00:00 2001 From: Aayush Bisen Date: Thu, 12 Jan 2023 06:51:50 +0000 Subject: [PATCH 43/94] add restart policy for worker-messaging container Fixes #4986 --- app/views/install/compose.phtml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index 2070043399..015a1f4a9d 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -509,6 +509,7 @@ services: entrypoint: worker-messaging <<: *x-logging container_name: appwrite-worker-messaging + restart: unless-stopped networks: - appwrite depends_on: From d49de9c6cfe5e6302391bb9e7989b6000f329cd5 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Thu, 12 Jan 2023 22:27:20 +1300 Subject: [PATCH 44/94] Use getProjectDB instead of new function --- app/workers/deletes.php | 2 +- src/Appwrite/Resque/Worker.php | 31 ++++++++++--------------------- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/app/workers/deletes.php b/app/workers/deletes.php index ca5299e8af..605f989ee1 100644 --- a/app/workers/deletes.php +++ b/app/workers/deletes.php @@ -254,7 +254,7 @@ class DeletesV1 extends Worker protected function deleteProject(Document $document): void { // Delete project tables - $dbForProject = $this->getProjectDBFromDocument($document); + $dbForProject = $this->getProjectDB($document->getId(), $document); $limit = 50; $offset = 0; diff --git a/src/Appwrite/Resque/Worker.php b/src/Appwrite/Resque/Worker.php index b01bace9ea..6de22c6441 100644 --- a/src/Appwrite/Resque/Worker.php +++ b/src/Appwrite/Resque/Worker.php @@ -165,31 +165,20 @@ abstract class Worker * @return Database * @throws Exception */ - protected function getProjectDB(string $projectId): Database + protected function getProjectDB(string $projectId, ?Document $project = null): Database { - $consoleDB = $this->getConsoleDB(); + if ($project === null) { + $consoleDB = $this->getConsoleDB(); - if ($projectId === 'console') { - return $consoleDB; + if ($projectId === 'console') { + return $consoleDB; + } + + /** @var Document $project */ + $project = Authorization::skip(fn() => $consoleDB->getDocument('projects', $projectId)); } - /** @var Document $project */ - $project = Authorization::skip(fn() => $consoleDB->getDocument('projects', $projectId)); - - return $this->getDB(self::DATABASE_PROJECT, $projectId, $project->getInternalId()); - } - - /** - * Get internal project database given the project document - * - * Allows avoiding race conditions when modifying the projects collection - * @param Document $project - * @return Database - * @throws Exception - */ - protected function getProjectDBFromDocument(Document $project): Database - { - return $this->getDB(self::DATABASE_PROJECT, project: $project); + return $this->getDB(self::DATABASE_PROJECT, $projectId, $project->getInternalId(), $project); } /** From 004bb82688e401385aebcc898fb24cf9129da469 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Thu, 12 Jan 2023 22:42:07 +1300 Subject: [PATCH 45/94] Fix functions + builds not deleted --- app/workers/deletes.php | 12 +++++++++--- src/Appwrite/Resque/Worker.php | 5 +++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/workers/deletes.php b/app/workers/deletes.php index 605f989ee1..2fbaf73b18 100644 --- a/app/workers/deletes.php +++ b/app/workers/deletes.php @@ -253,8 +253,10 @@ class DeletesV1 extends Worker */ protected function deleteProject(Document $document): void { + $projectId = $document->getId(); + // Delete project tables - $dbForProject = $this->getProjectDB($document->getId(), $document); + $dbForProject = $this->getProjectDB($projectId, $document); $limit = 50; $offset = 0; @@ -282,10 +284,14 @@ class DeletesV1 extends Worker } // Delete all storage directories - $uploads = $this->getFilesDevice($document->getId()); - $cache = new Local(APP_STORAGE_CACHE . '/app-' . $document->getId()); + $uploads = $this->getFilesDevice($projectId); + $functions = $this->getFunctionsDevice($projectId); + $builds = $this->getBuildsDevice($projectId); + $cache = $this->getCacheDevice($projectId); $uploads->delete($uploads->getRoot(), true); + $functions->delete($functions->getRoot(), true); + $builds->delete($builds->getRoot(), true); $cache->delete($cache->getRoot(), true); } diff --git a/src/Appwrite/Resque/Worker.php b/src/Appwrite/Resque/Worker.php index 6de22c6441..bfaab0eeae 100644 --- a/src/Appwrite/Resque/Worker.php +++ b/src/Appwrite/Resque/Worker.php @@ -296,6 +296,11 @@ abstract class Worker return $this->getDevice(APP_STORAGE_BUILDS . '/app-' . $projectId); } + protected function getCacheDevice(string $projectId): Device + { + return $this->getDevice(APP_STORAGE_CACHE . '/app-' . $projectId); + } + /** * Get Device based on selected storage environment * @param string $root path of the device From cb9b94ff0480c04e374b4d8aa3456d9331d19e7f Mon Sep 17 00:00:00 2001 From: Steven <1477010+stnguyen90@users.noreply.github.com> Date: Thu, 12 Jan 2023 11:33:29 -0800 Subject: [PATCH 46/94] Update Platform Model type property description Co-authored-by: Ian Koerich Maciel --- src/Appwrite/Utopia/Response/Model/Platform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Appwrite/Utopia/Response/Model/Platform.php b/src/Appwrite/Utopia/Response/Model/Platform.php index fa105299ef..4b8ffb1486 100644 --- a/src/Appwrite/Utopia/Response/Model/Platform.php +++ b/src/Appwrite/Utopia/Response/Model/Platform.php @@ -41,7 +41,7 @@ class Platform extends Model ]) ->addRule('type', [ 'type' => self::TYPE_STRING, - 'description' => 'Platform type. Possible values are: web, flutter-ios, flutter-android, ios, android, and unity.', + 'description' => 'Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.', 'default' => '', 'example' => 'web', ]) From 31b718d829ff2ec9de858906d337be679dee66e4 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Fri, 13 Jan 2023 15:28:04 +0000 Subject: [PATCH 47/94] Replace Appwrite Validators with backported Utopia ones + Updated Utopia Framework to 0.26.0 + Replaced Appwrite Validators with Utopia ones --- app/controllers/api/account.php | 4 +- app/controllers/api/avatars.php | 2 +- app/controllers/api/databases.php | 4 +- app/controllers/api/projects.php | 4 +- app/controllers/api/teams.php | 2 +- app/controllers/mock.php | 2 +- app/init.php | 4 +- composer.json | 2 +- composer.lock | 44 +++---- src/Appwrite/GraphQL/Types/Mapper.php | 2 +- src/Appwrite/Network/Validator/Domain.php | 78 ------------- src/Appwrite/Network/Validator/Host.php | 84 -------------- src/Appwrite/Network/Validator/IP.php | 114 ------------------- src/Appwrite/Network/Validator/URL.php | 92 --------------- tests/unit/Network/Validators/DomainTest.php | 2 +- tests/unit/Network/Validators/HostTest.php | 2 +- tests/unit/Network/Validators/IPTest.php | 2 +- tests/unit/Network/Validators/URLTest.php | 2 +- 18 files changed, 39 insertions(+), 407 deletions(-) delete mode 100644 src/Appwrite/Network/Validator/Domain.php delete mode 100644 src/Appwrite/Network/Validator/Host.php delete mode 100644 src/Appwrite/Network/Validator/IP.php delete mode 100644 src/Appwrite/Network/Validator/URL.php diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index f9425f690b..e7df74b686 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -10,8 +10,8 @@ use Appwrite\Event\Mail; use Appwrite\Event\Phone as EventPhone; use Appwrite\Extend\Exception; use Appwrite\Network\Validator\Email; -use Appwrite\Network\Validator\Host; -use Appwrite\Network\Validator\URL; +use Utopia\Validator\Host; +use Utopia\Validator\URL; use Appwrite\OpenSSL\OpenSSL; use Appwrite\Template\Template; use Appwrite\URL\URL as URLParser; diff --git a/app/controllers/api/avatars.php b/app/controllers/api/avatars.php index fbc77d69f6..b6688b8ba0 100644 --- a/app/controllers/api/avatars.php +++ b/app/controllers/api/avatars.php @@ -1,7 +1,7 @@ whitelist = $whitelist; - } - - /** - * Get Description - * - * Returns validator description - * - * @return string - */ - public function getDescription(): string - { - return 'URL host must be one of: ' . \implode(', ', $this->whitelist); - } - - /** - * Is valid - * - * Validation will pass when $value starts with one of the given hosts - * - * @param mixed $value - * @return bool - */ - public function isValid($value): bool - { - // Check if value is valid URL - $urlValidator = new URL(); - - if (!$urlValidator->isValid($value)) { - return false; - } - - $hostname = \parse_url($value, PHP_URL_HOST); - $hostnameValidator = new Hostname($this->whitelist); - return $hostnameValidator->isValid($hostname); - } - - /** - * Is array - * - * Function will return true if object is array. - * - * @return bool - */ - public function isArray(): bool - { - return false; - } - - /** - * Get Type - * - * Returns validator type. - * - * @return string - */ - public function getType(): string - { - return self::TYPE_STRING; - } -} diff --git a/src/Appwrite/Network/Validator/IP.php b/src/Appwrite/Network/Validator/IP.php deleted file mode 100644 index 0245d59d3e..0000000000 --- a/src/Appwrite/Network/Validator/IP.php +++ /dev/null @@ -1,114 +0,0 @@ -type = $type; - } - - /** - * Get Description - * - * Returns validator description - * - * @return string - */ - public function getDescription(): string - { - return 'Value must be a valid IP address'; - } - - /** - * Is valid - * - * Validation will pass when $value is valid IP address. - * - * @param mixed $value - * @return bool - */ - public function isValid($value): bool - { - switch ($this->type) { - case self::ALL: - if (\filter_var($value, FILTER_VALIDATE_IP)) { - return true; - } - break; - - case self::V4: - if (\filter_var($value, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { - return true; - } - break; - - case self::V6: - if (\filter_var($value, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { - return true; - } - break; - - default: - return false; - break; - } - - return false; - } - - /** - * Is array - * - * Function will return true if object is array. - * - * @return bool - */ - public function isArray(): bool - { - return false; - } - - /** - * Get Type - * - * Returns validator type. - * - * @return string - */ - public function getType(): string - { - return self::TYPE_STRING; - } -} diff --git a/src/Appwrite/Network/Validator/URL.php b/src/Appwrite/Network/Validator/URL.php deleted file mode 100644 index 40a12420f5..0000000000 --- a/src/Appwrite/Network/Validator/URL.php +++ /dev/null @@ -1,92 +0,0 @@ -allowedSchemes = $allowedSchemes; - } - - /** - * Get Description - * - * Returns validator description - * - * @return string - */ - public function getDescription(): string - { - if (!empty($this->allowedSchemes)) { - return 'Value must be a valid URL with following schemes (' . \implode(', ', $this->allowedSchemes) . ')'; - } - - return 'Value must be a valid URL'; - } - - /** - * Is valid - * - * Validation will pass when $value is valid URL. - * - * @param mixed $value - * @return bool - */ - public function isValid($value): bool - { - $sanitizedURL = ''; - - foreach (str_split($value) as $character) { - $sanitizedURL .= (ord($character) > 127) ? rawurlencode($character) : $character; - } - - if (\filter_var($sanitizedURL, FILTER_VALIDATE_URL) === false) { - return false; - } - - if (!empty($this->allowedSchemes) && !\in_array(\parse_url($sanitizedURL, PHP_URL_SCHEME), $this->allowedSchemes)) { - return false; - } - - return true; - } - - /** - * Is array - * - * Function will return true if object is array. - * - * @return bool - */ - public function isArray(): bool - { - return false; - } - - /** - * Get Type - * - * Returns validator type. - * - * @return string - */ - public function getType(): string - { - return self::TYPE_STRING; - } -} diff --git a/tests/unit/Network/Validators/DomainTest.php b/tests/unit/Network/Validators/DomainTest.php index 631ea10753..c158e39416 100644 --- a/tests/unit/Network/Validators/DomainTest.php +++ b/tests/unit/Network/Validators/DomainTest.php @@ -2,7 +2,7 @@ namespace Tests\Unit\Network\Validators; -use Appwrite\Network\Validator\Domain; +use Utopia\Validator\Domain; use PHPUnit\Framework\TestCase; class DomainTest extends TestCase diff --git a/tests/unit/Network/Validators/HostTest.php b/tests/unit/Network/Validators/HostTest.php index 7974bf86a1..a2c89ba1e2 100755 --- a/tests/unit/Network/Validators/HostTest.php +++ b/tests/unit/Network/Validators/HostTest.php @@ -14,7 +14,7 @@ namespace Tests\Unit\Network\Validators; -use Appwrite\Network\Validator\Host; +use Utopia\Validator\Host; use PHPUnit\Framework\TestCase; class HostTest extends TestCase diff --git a/tests/unit/Network/Validators/IPTest.php b/tests/unit/Network/Validators/IPTest.php index 57e395111c..370f3d60ca 100755 --- a/tests/unit/Network/Validators/IPTest.php +++ b/tests/unit/Network/Validators/IPTest.php @@ -14,7 +14,7 @@ namespace Tests\Unit\Network\Validators; -use Appwrite\Network\Validator\IP; +use Utopia\Validator\IP; use PHPUnit\Framework\TestCase; class IPTest extends TestCase diff --git a/tests/unit/Network/Validators/URLTest.php b/tests/unit/Network/Validators/URLTest.php index bc43f25623..b73df8f5a8 100755 --- a/tests/unit/Network/Validators/URLTest.php +++ b/tests/unit/Network/Validators/URLTest.php @@ -14,7 +14,7 @@ namespace Tests\Unit\Network\Validators; -use Appwrite\Network\Validator\URL; +use Utopia\Validator\URL; use PHPUnit\Framework\TestCase; class URLTest extends TestCase From 7910149053ac878412e7c55dbb6074988844c877 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Fri, 13 Jan 2023 15:42:29 +0000 Subject: [PATCH 48/94] Remove tests and update other references to old validators --- src/Appwrite/GraphQL/Types/Mapper.php | 8 +- tests/unit/Network/Validators/DomainTest.php | 43 ---------- tests/unit/Network/Validators/HostTest.php | 44 ---------- tests/unit/Network/Validators/IPTest.php | 87 -------------------- tests/unit/Network/Validators/URLTest.php | 57 ------------- 5 files changed, 4 insertions(+), 235 deletions(-) delete mode 100644 tests/unit/Network/Validators/DomainTest.php delete mode 100755 tests/unit/Network/Validators/HostTest.php delete mode 100755 tests/unit/Network/Validators/IPTest.php delete mode 100755 tests/unit/Network/Validators/URLTest.php diff --git a/src/Appwrite/GraphQL/Types/Mapper.php b/src/Appwrite/GraphQL/Types/Mapper.php index 1675acc308..42bdc4b149 100644 --- a/src/Appwrite/GraphQL/Types/Mapper.php +++ b/src/Appwrite/GraphQL/Types/Mapper.php @@ -232,14 +232,14 @@ class Mapper case 'Appwrite\Network\Validator\Email': case 'Appwrite\Event\Validator\Event': case 'Utopia\Validator\HexColor': - case 'Appwrite\Network\Validator\Host': - case 'Appwrite\Network\Validator\IP': + case 'Utopia\Validator\Host': + case 'Utopia\Validator\IP': case 'Utopia\Database\Validator\Key': - case 'Appwrite\Network\Validator\Origin': + case 'Utopia\Validator\Origin': case 'Appwrite\Auth\Validator\Password': case 'Utopia\Validator\Text': case 'Utopia\Database\Validator\UID': - case 'Appwrite\Network\Validator\URL': + case 'Utopia\Validator\URL': case 'Utopia\Validator\WhiteList': default: $type = Type::string(); diff --git a/tests/unit/Network/Validators/DomainTest.php b/tests/unit/Network/Validators/DomainTest.php deleted file mode 100644 index c158e39416..0000000000 --- a/tests/unit/Network/Validators/DomainTest.php +++ /dev/null @@ -1,43 +0,0 @@ -domain = new Domain(); - } - - public function tearDown(): void - { - $this->domain = null; - } - - public function testIsValid(): void - { - // Assertions - $this->assertEquals(true, $this->domain->isValid('example.com')); - $this->assertEquals(true, $this->domain->isValid('subdomain.example.com')); - $this->assertEquals(true, $this->domain->isValid('subdomain.example-app.com')); - $this->assertEquals(true, $this->domain->isValid('subdomain.example_app.com')); - $this->assertEquals(true, $this->domain->isValid('subdomain-new.example.com')); - $this->assertEquals(true, $this->domain->isValid('subdomain_new.example.com')); - $this->assertEquals(true, $this->domain->isValid('localhost')); - $this->assertEquals(true, $this->domain->isValid('appwrite.io')); - $this->assertEquals(true, $this->domain->isValid('appwrite.org')); - $this->assertEquals(true, $this->domain->isValid('appwrite.org')); - $this->assertEquals(false, $this->domain->isValid(false)); - $this->assertEquals(false, $this->domain->isValid('.')); - $this->assertEquals(false, $this->domain->isValid('..')); - $this->assertEquals(false, $this->domain->isValid('')); - $this->assertEquals(false, $this->domain->isValid(['string', 'string'])); - $this->assertEquals(false, $this->domain->isValid(1)); - $this->assertEquals(false, $this->domain->isValid(1.2)); - } -} diff --git a/tests/unit/Network/Validators/HostTest.php b/tests/unit/Network/Validators/HostTest.php deleted file mode 100755 index a2c89ba1e2..0000000000 --- a/tests/unit/Network/Validators/HostTest.php +++ /dev/null @@ -1,44 +0,0 @@ - - * @version 1.0 RC4 - * @license The MIT License (MIT) - */ - -namespace Tests\Unit\Network\Validators; - -use Utopia\Validator\Host; -use PHPUnit\Framework\TestCase; - -class HostTest extends TestCase -{ - protected ?Host $host = null; - - public function setUp(): void - { - $this->host = new Host(['appwrite.io', 'subdomain.appwrite.test', 'localhost']); - } - - public function tearDown(): void - { - $this->host = null; - } - - public function testIsValid(): void - { - // Assertions - $this->assertEquals($this->host->isValid('https://appwrite.io/link'), true); - $this->assertEquals($this->host->isValid('https://localhost'), true); - $this->assertEquals($this->host->isValid('localhost'), false); - $this->assertEquals($this->host->isValid('http://subdomain.appwrite.test/path'), true); - $this->assertEquals($this->host->isValid('http://test.subdomain.appwrite.test/path'), false); - $this->assertEquals($this->host->getType(), 'string'); - } -} diff --git a/tests/unit/Network/Validators/IPTest.php b/tests/unit/Network/Validators/IPTest.php deleted file mode 100755 index 370f3d60ca..0000000000 --- a/tests/unit/Network/Validators/IPTest.php +++ /dev/null @@ -1,87 +0,0 @@ - - * @version 1.0 RC4 - * @license The MIT License (MIT) - */ - -namespace Tests\Unit\Network\Validators; - -use Utopia\Validator\IP; -use PHPUnit\Framework\TestCase; - -class IPTest extends TestCase -{ - protected ?IP $validator; - - public function setUp(): void - { - $this->validator = new IP(); - } - - public function tearDown(): void - { - $this->validator = null; - } - - public function testIsValidIP(): void - { - $this->assertEquals($this->validator->isValid('2001:0db8:85a3:08d3:1319:8a2e:0370:7334'), true); - $this->assertEquals($this->validator->isValid('109.67.204.101'), true); - $this->assertEquals($this->validator->isValid(23.5), false); - $this->assertEquals($this->validator->isValid('23.5'), false); - $this->assertEquals($this->validator->isValid(null), false); - $this->assertEquals($this->validator->isValid(true), false); - $this->assertEquals($this->validator->isValid(false), false); - $this->assertEquals($this->validator->getType(), 'string'); - } - - public function testIsValidIPALL(): void - { - $this->validator = new IP(IP::ALL); - - // Assertions - $this->assertEquals($this->validator->isValid('2001:0db8:85a3:08d3:1319:8a2e:0370:7334'), true); - $this->assertEquals($this->validator->isValid('109.67.204.101'), true); - $this->assertEquals($this->validator->isValid(23.5), false); - $this->assertEquals($this->validator->isValid('23.5'), false); - $this->assertEquals($this->validator->isValid(null), false); - $this->assertEquals($this->validator->isValid(true), false); - $this->assertEquals($this->validator->isValid(false), false); - } - - public function testIsValidIPV4(): void - { - $this->validator = new IP(IP::V4); - - // Assertions - $this->assertEquals($this->validator->isValid('2001:0db8:85a3:08d3:1319:8a2e:0370:7334'), false); - $this->assertEquals($this->validator->isValid('109.67.204.101'), true); - $this->assertEquals($this->validator->isValid(23.5), false); - $this->assertEquals($this->validator->isValid('23.5'), false); - $this->assertEquals($this->validator->isValid(null), false); - $this->assertEquals($this->validator->isValid(true), false); - $this->assertEquals($this->validator->isValid(false), false); - } - - public function testIsValidIPV6(): void - { - $this->validator = new IP(IP::V6); - - // Assertions - $this->assertEquals($this->validator->isValid('2001:0db8:85a3:08d3:1319:8a2e:0370:7334'), true); - $this->assertEquals($this->validator->isValid('109.67.204.101'), false); - $this->assertEquals($this->validator->isValid(23.5), false); - $this->assertEquals($this->validator->isValid('23.5'), false); - $this->assertEquals($this->validator->isValid(null), false); - $this->assertEquals($this->validator->isValid(true), false); - $this->assertEquals($this->validator->isValid(false), false); - } -} diff --git a/tests/unit/Network/Validators/URLTest.php b/tests/unit/Network/Validators/URLTest.php deleted file mode 100755 index b73df8f5a8..0000000000 --- a/tests/unit/Network/Validators/URLTest.php +++ /dev/null @@ -1,57 +0,0 @@ - - * @version 1.0 RC4 - * @license The MIT License (MIT) - */ - -namespace Tests\Unit\Network\Validators; - -use Utopia\Validator\URL; -use PHPUnit\Framework\TestCase; - -class URLTest extends TestCase -{ - protected ?URL $url; - - public function setUp(): void - { - $this->url = new URL(); - } - - public function tearDown(): void - { - $this->url = null; - } - - public function testIsValid(): void - { - $this->assertEquals('Value must be a valid URL', $this->url->getDescription()); - $this->assertEquals(true, $this->url->isValid('http://example.com')); - $this->assertEquals(true, $this->url->isValid('https://example.com')); - $this->assertEquals(true, $this->url->isValid('htts://example.com')); // does not validate protocol - $this->assertEquals(false, $this->url->isValid('example.com')); // though, requires some kind of protocol - $this->assertEquals(false, $this->url->isValid('http:/example.com')); - $this->assertEquals(true, $this->url->isValid('http://exa-mple.com')); - $this->assertEquals(false, $this->url->isValid('htt@s://example.com')); - $this->assertEquals(true, $this->url->isValid('http://www.example.com/foo%2\u00c2\u00a9zbar')); - $this->assertEquals(true, $this->url->isValid('http://www.example.com/?q=%3Casdf%3E')); - $this->assertEquals(true, $this->url->isValid('https://example.com/foo%2\u00c2\u00ä9zbär')); - } - - public function testIsValidAllowedSchemes(): void - { - $this->url = new URL(['http', 'https']); - $this->assertEquals('Value must be a valid URL with following schemes (http, https)', $this->url->getDescription()); - $this->assertEquals(true, $this->url->isValid('http://example.com')); - $this->assertEquals(true, $this->url->isValid('https://example.com')); - $this->assertEquals(false, $this->url->isValid('gopher://www.example.com')); - } -} From f5715f4df859a13192bacb0c8dc0dc7ffd3cbcfa Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Fri, 13 Jan 2023 15:43:57 +0000 Subject: [PATCH 49/94] Update Spec generator --- src/Appwrite/Specification/Format/OpenAPI3.php | 4 ++-- src/Appwrite/Specification/Format/Swagger2.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Appwrite/Specification/Format/OpenAPI3.php b/src/Appwrite/Specification/Format/OpenAPI3.php index fb7208c569..0e54977d60 100644 --- a/src/Appwrite/Specification/Format/OpenAPI3.php +++ b/src/Appwrite/Specification/Format/OpenAPI3.php @@ -311,7 +311,7 @@ class OpenAPI3 extends Format $node['schema']['format'] = 'email'; $node['schema']['x-example'] = 'email@example.com'; break; - case 'Appwrite\Network\Validator\URL': + case 'Utopia\Validator\URL': $node['schema']['type'] = $validator->getType(); $node['schema']['format'] = 'url'; $node['schema']['x-example'] = 'https://example.com'; @@ -391,7 +391,7 @@ class OpenAPI3 extends Format case 'Utopia\Validator\Length': $node['schema']['type'] = $validator->getType(); break; - case 'Appwrite\Network\Validator\Host': + case 'Utopia\Validator\Host': $node['schema']['type'] = $validator->getType(); $node['schema']['format'] = 'url'; $node['schema']['x-example'] = 'https://example.com'; diff --git a/src/Appwrite/Specification/Format/Swagger2.php b/src/Appwrite/Specification/Format/Swagger2.php index e4d673ed14..ea48d671f2 100644 --- a/src/Appwrite/Specification/Format/Swagger2.php +++ b/src/Appwrite/Specification/Format/Swagger2.php @@ -312,7 +312,7 @@ class Swagger2 extends Format $node['format'] = 'email'; $node['x-example'] = 'email@example.com'; break; - case 'Appwrite\Network\Validator\URL': + case 'Utopia\Validator\URL': $node['type'] = $validator->getType(); $node['format'] = 'url'; $node['x-example'] = 'https://example.com'; @@ -393,7 +393,7 @@ class Swagger2 extends Format case 'Utopia\Validator\Length': $node['type'] = $validator->getType(); break; - case 'Appwrite\Network\Validator\Host': + case 'Utopia\Validator\Host': $node['type'] = $validator->getType(); $node['format'] = 'url'; $node['x-example'] = 'https://example.com'; From 92a384e31c2371f0f654376ea14ee0483a82e022 Mon Sep 17 00:00:00 2001 From: "Vincent (Wen Yu) Ge" Date: Fri, 13 Jan 2023 14:27:08 -0500 Subject: [PATCH 50/94] Fix descriptions for ID and regen 1.2.x specs --- app/config/specs/open-api3-1.1.x-client.json | 2 +- app/config/specs/open-api3-1.1.x-console.json | 2 +- app/config/specs/open-api3-1.1.x-server.json | 2 +- app/config/specs/open-api3-1.2.x-client.json | 1 + app/config/specs/open-api3-1.2.x-console.json | 1 + app/config/specs/open-api3-1.2.x-server.json | 1 + 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-1.1.x-client.json | 2 +- app/config/specs/swagger2-1.1.x-console.json | 2 +- app/config/specs/swagger2-1.1.x-server.json | 2 +- app/config/specs/swagger2-1.2.x-client.json | 1 + app/config/specs/swagger2-1.2.x-console.json | 1 + app/config/specs/swagger2-1.2.x-server.json | 1 + app/config/specs/swagger2-latest-client.json | 2 +- app/config/specs/swagger2-latest-console.json | 2 +- app/config/specs/swagger2-latest-server.json | 2 +- app/controllers/api/account.php | 6 +++--- app/controllers/api/databases.php | 6 +++--- app/controllers/api/functions.php | 2 +- app/controllers/api/projects.php | 2 +- app/controllers/api/storage.php | 4 ++-- app/controllers/api/teams.php | 2 +- app/controllers/api/users.php | 14 +++++++------- 25 files changed, 36 insertions(+), 30 deletions(-) create mode 100644 app/config/specs/open-api3-1.2.x-client.json create mode 100644 app/config/specs/open-api3-1.2.x-console.json create mode 100644 app/config/specs/open-api3-1.2.x-server.json create mode 100644 app/config/specs/swagger2-1.2.x-client.json create mode 100644 app/config/specs/swagger2-1.2.x-console.json create mode 100644 app/config/specs/swagger2-1.2.x-server.json diff --git a/app/config/specs/open-api3-1.1.x-client.json b/app/config/specs/open-api3-1.1.x-client.json index 4faefbdba2..70b5a99cd3 100644 --- a/app/config/specs/open-api3-1.1.x-client.json +++ b/app/config/specs/open-api3-1.1.x-client.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.1.2","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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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-1.1.x-console.json b/app/config/specs/open-api3-1.1.x-console.json index 1412b5e8d3..1788e6fc9f 100644 --- a/app/config/specs/open-api3-1.1.x-console.json +++ b/app/config/specs/open-api3-1.1.x-console.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.1.2","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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":192,"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":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":191,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"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":103,"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":105,"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":111,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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":110,"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":129,"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":128,"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":130,"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":132,"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":131,"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":119,"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":118,"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. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"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":120,"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":121,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":122,"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":107,"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]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":124,"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":123,"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":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":125,"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":126,"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":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":127,"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":106,"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":104,"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":113,"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":112,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":114,"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":115,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":117,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":116,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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":146,"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":147,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":159,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":186,"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":192,"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":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":191,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"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","region"]}}}}}},"\/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":103,"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":105,"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":111,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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":110,"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":129,"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":128,"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":130,"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":132,"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":131,"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":119,"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":118,"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. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"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":120,"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":121,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":122,"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":107,"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]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":124,"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":123,"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":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":125,"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":126,"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":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":127,"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":106,"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":104,"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":113,"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":112,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":114,"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":115,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":117,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":116,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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":146,"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":147,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":159,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":186,"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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-1.1.x-server.json b/app/config/specs/open-api3-1.1.x-server.json index 80306a0715..e981a7abf8 100644 --- a/app/config/specs/open-api3-1.1.x-server.json +++ b/app/config/specs/open-api3-1.1.x-server.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.1.2","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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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-1.2.x-client.json b/app/config/specs/open-api3-1.2.x-client.json new file mode 100644 index 0000000000..a1c0de352d --- /dev/null +++ b/app/config/specs/open-api3-1.2.x-client.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{"version":"1.1.2","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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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-1.2.x-console.json b/app/config/specs/open-api3-1.2.x-console.json new file mode 100644 index 0000000000..0647c51984 --- /dev/null +++ b/app/config/specs/open-api3-1.2.x-console.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{"version":"1.1.2","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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 generate a random ID with `ID.unique()`. Valid chars are 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":192,"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":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":191,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"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 generate a random ID with `ID.unique()`. Valid chars are 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]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"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":103,"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":105,"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":111,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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":110,"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":129,"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":128,"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":130,"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":132,"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":131,"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":119,"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":118,"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. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"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":120,"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":121,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":122,"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":107,"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]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":124,"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":123,"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":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":125,"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":126,"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":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":127,"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":106,"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":104,"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":113,"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":112,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":114,"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":115,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":117,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":116,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":133,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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":146,"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":147,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":159,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":160,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":186,"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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-1.2.x-server.json b/app/config/specs/open-api3-1.2.x-server.json new file mode 100644 index 0000000000..f132656d41 --- /dev/null +++ b/app/config/specs/open-api3-1.2.x-server.json @@ -0,0 +1 @@ +{"openapi":"3.0.0","info":{"version":"1.1.2","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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 generate a random ID with `ID.unique()`. Valid chars are 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":133,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":160,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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-client.json b/app/config/specs/open-api3-latest-client.json index 70b5a99cd3..6a7b3f2955 100644 --- a/app/config/specs/open-api3-latest-client.json +++ b/app/config/specs/open-api3-latest-client.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/graphql":{"get":{"summary":"GraphQL Endpoint","operationId":"graphqlGet","tags":["graphql"],"description":"Execute a GraphQL query.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"get","weight":237,"cookies":false,"type":"","demo":"graphql\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/get.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"query","description":"The query to execute.","required":true,"schema":{"type":"string","x-example":"[QUERY]"},"in":"query"},{"name":"operationName","description":"The name of the operation to execute.","required":false,"schema":{"type":"string","x-example":"[OPERATION_NAME]","default":""},"in":"query"},{"name":"variables","description":"The JSON encoded variables to use in the query.","required":false,"schema":{"type":"string","x-example":"[VARIABLES]","default":""},"in":"query"}]},"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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 1788e6fc9f..ad946c53f3 100644 --- a/app/config/specs/open-api3-latest-console.json +++ b/app/config/specs/open-api3-latest-console.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":192,"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":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":191,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"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","region"]}}}}}},"\/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":103,"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":105,"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":111,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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":110,"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":129,"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":128,"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":130,"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":132,"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":131,"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":119,"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":118,"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. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"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":120,"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":121,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":122,"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":107,"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]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":124,"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":123,"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":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":125,"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":126,"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":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":127,"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":106,"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":104,"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":113,"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":112,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":114,"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":115,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":117,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":116,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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":146,"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":147,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":159,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":186,"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"get":{"summary":"GraphQL Endpoint","operationId":"graphqlGet","tags":["graphql"],"description":"Execute a GraphQL query.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"get","weight":237,"cookies":false,"type":"","demo":"graphql\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/get.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"query","description":"The query to execute.","required":true,"schema":{"type":"string","x-example":"[QUERY]"},"in":"query"},{"name":"operationName","description":"The name of the operation to execute.","required":false,"schema":{"type":"string","x-example":"[OPERATION_NAME]","default":""},"in":"query"},{"name":"variables","description":"The JSON encoded variables to use in the query.","required":false,"schema":{"type":"string","x-example":"[VARIABLES]","default":""},"in":"query"}]},"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"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":111,"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. Value allowed is between 1-100. Default is 10","x-example":1}},"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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":123,"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":107,"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]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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 e981a7abf8..a76d6fc310 100644 --- a/app/config/specs/open-api3-latest-server.json +++ b/app/config/specs/open-api3-latest-server.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":203,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"get":{"summary":"GraphQL Endpoint","operationId":"graphqlGet","tags":["graphql"],"description":"Execute a GraphQL query.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"get","weight":237,"cookies":false,"type":"","demo":"graphql\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/get.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"query","description":"The query to execute.","required":true,"schema":{"type":"string","x-example":"[QUERY]"},"in":"query"},{"name":"operationName","description":"The name of the operation to execute.","required":false,"schema":{"type":"string","x-example":"[OPERATION_NAME]","default":""},"in":"query"},{"name":"variables","description":"The JSON encoded variables to use in the query.","required":false,"schema":{"type":"string","x-example":"[VARIABLES]","default":""},"in":"query"}]},"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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-1.1.x-client.json b/app/config/specs/swagger2-1.1.x-client.json index f803638cdd..6a213bbf4d 100644 --- a/app/config/specs/swagger2-1.1.x-client.json +++ b/app/config/specs/swagger2-1.1.x-client.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.1.2","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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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-1.1.x-console.json b/app/config/specs/swagger2-1.1.x-console.json index c95fd45b4f..8ed4993f3a 100644 --- a/app/config/specs/swagger2-1.1.x-console.json +++ b/app/config/specs/swagger2-1.1.x-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.1.2","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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":192,"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":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":191,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default"},"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":103,"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":105,"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":111,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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":110,"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":129,"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":128,"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":130,"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":132,"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":131,"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":119,"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":118,"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. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":120,"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":121,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":122,"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":107,"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":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":124,"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":123,"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":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":125,"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":126,"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":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":127,"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":106,"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":104,"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":113,"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":112,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":114,"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":115,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":117,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":116,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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":146,"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":147,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":159,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":186,"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":192,"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":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":191,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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]"},"region":{"type":"string","description":"Project Region.","default":null,"x-example":"default"},"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","region"]}}]}},"\/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":103,"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":105,"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":111,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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":110,"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":129,"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":128,"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":130,"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":132,"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":131,"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":119,"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":118,"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. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":120,"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":121,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":122,"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":107,"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":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":124,"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":123,"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":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":125,"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":126,"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":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":127,"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":106,"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":104,"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":113,"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":112,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":114,"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":115,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":117,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":116,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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":146,"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":147,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":159,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":186,"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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-1.1.x-server.json b/app/config/specs/swagger2-1.1.x-server.json index 0665d0d87c..4bf56f9d39 100644 --- a/app/config/specs/swagger2-1.1.x-server.json +++ b/app/config/specs/swagger2-1.1.x-server.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.1.2","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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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-1.2.x-client.json b/app/config/specs/swagger2-1.2.x-client.json new file mode 100644 index 0000000000..85b6eb3510 --- /dev/null +++ b/app/config/specs/swagger2-1.2.x-client.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"version":"1.1.2","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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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-1.2.x-console.json b/app/config/specs/swagger2-1.2.x-console.json new file mode 100644 index 0000000000..c1cbe26d84 --- /dev/null +++ b/app/config/specs/swagger2-1.2.x-console.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"version":"1.1.2","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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":192,"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":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":191,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default"},"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":103,"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":105,"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":111,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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":110,"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":129,"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":128,"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":130,"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":132,"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":131,"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":119,"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":118,"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. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":120,"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":121,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":122,"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":107,"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":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":124,"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":123,"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":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":125,"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":126,"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":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":127,"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":106,"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":104,"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":113,"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":112,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":114,"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":115,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":117,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":116,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":133,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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":146,"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":147,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":159,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":160,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":186,"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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-1.2.x-server.json b/app/config/specs/swagger2-1.2.x-server.json new file mode 100644 index 0000000000..18b4379e7e --- /dev/null +++ b/app/config/specs/swagger2-1.2.x-server.json @@ -0,0 +1 @@ +{"swagger":"2.0","info":{"version":"1.1.2","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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":133,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":160,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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-client.json b/app/config/specs/swagger2-latest-client.json index 6a213bbf4d..cc67367ea9 100644 --- a/app/config/specs/swagger2-latest-client.json +++ b/app/config/specs/swagger2-latest-client.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/graphql":{"get":{"summary":"GraphQL Endpoint","operationId":"graphqlGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL query.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"get","weight":237,"cookies":false,"type":"","demo":"graphql\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/get.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"query","description":"The query to execute.","required":true,"type":"string","x-example":"[QUERY]","in":"query"},{"name":"operationName","description":"The name of the operation to execute.","required":false,"type":"string","x-example":"[OPERATION_NAME]","default":"","in":"query"},{"name":"variables","description":"The JSON encoded variables to use in the query.","required":false,"type":"string","x-example":"[VARIABLES]","default":"","in":"query"}]},"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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 8ed4993f3a..b9f878a309 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":192,"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":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":191,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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]"},"region":{"type":"string","description":"Project Region.","default":null,"x-example":"default"},"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","region"]}}]}},"\/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":103,"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":105,"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":111,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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":110,"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":129,"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":128,"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":130,"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":132,"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":131,"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":119,"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":118,"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. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":120,"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":121,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":122,"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":107,"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":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":124,"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":123,"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":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":125,"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":126,"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":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":127,"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":106,"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":104,"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":113,"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":112,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":114,"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":115,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":117,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":116,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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":146,"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":147,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":159,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":186,"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"get":{"summary":"GraphQL Endpoint","operationId":"graphqlGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL query.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"get","weight":237,"cookies":false,"type":"","demo":"graphql\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/get.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"query","description":"The query to execute.","required":true,"type":"string","x-example":"[QUERY]","in":"query"},{"name":"operationName","description":"The name of the operation to execute.","required":false,"type":"string","x-example":"[OPERATION_NAME]","default":"","in":"query"},{"name":"variables","description":"The JSON encoded variables to use in the query.","required":false,"type":"string","x-example":"[VARIABLES]","default":"","in":"query"}]},"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"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":111,"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. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":123,"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":107,"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":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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 4bf56f9d39..0aac07c4e8 100644 --- a/app/config/specs/swagger2-latest-server.json +++ b/app/config/specs/swagger2-latest-server.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.1.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":188,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":187,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":189,"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":190,"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":193,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":195,"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":197,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":196,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":198,"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":194,"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":199,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":200,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":202,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":201,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":203,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":205,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":204,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":206,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":207,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":208,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/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":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":134,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":133,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":135,"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":136,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":137,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":139,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":138,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":140,"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":144,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":145,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":142,"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":141,"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":143,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":149,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":148,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":150,"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":151,"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":152,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":154,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":153,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":155,"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":156,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":158,"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":157,"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":168,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":160,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":163,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":161,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":162,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":165,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":166,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":164,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":169,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":185,"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":179,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":173,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":172,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":177,"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":178,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":180,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":170,"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":182,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":171,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":184,"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":183,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":174,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":181,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":176,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]}],"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"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object"},"algoSha":{"description":"AlgoSHA","type":"object"},"algoPhpass":{"description":"AlgoPHPass","type":"object"},"algoBcrypt":{"description":"AlgoBcrypt","type":"object"},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"get":{"summary":"GraphQL Endpoint","operationId":"graphqlGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL query.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"get","weight":237,"cookies":false,"type":"","demo":"graphql\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/get.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"query","description":"The query to execute.","required":true,"type":"string","x-example":"[QUERY]","in":"query"},{"name":"operationName","description":"The name of the operation to execute.","required":false,"type":"string","x-example":"[OPERATION_NAME]","default":"","in":"query"},{"name":"variables","description":"The JSON encoded variables to use in the query.","required":false,"type":"string","x-example":"[VARIABLES]","default":"","in":"query"}]},"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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/controllers/api/account.php b/app/controllers/api/account.php index 45fb03062f..dadcdd219f 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -62,7 +62,7 @@ App::post('/v1/account') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_ACCOUNT) ->label('abuse-limit', 10) - ->param('userId', '', new CustomId(), 'Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('password', '', new Password(), 'User password. Must be at least 8 chars.') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) @@ -621,7 +621,7 @@ App::post('/v1/account/sessions/magic-url') ->label('sdk.response.model', Response::MODEL_TOKEN) ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},email:{param-email}') - ->param('userId', '', new CustomId(), 'Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('url', '', fn($clients) => new Host($clients), 'URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) ->inject('request') @@ -876,7 +876,7 @@ App::post('/v1/account/sessions/phone') ->label('sdk.response.model', Response::MODEL_TOKEN) ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},email:{param-email}') - ->param('userId', '', new CustomId(), 'Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('phone', '', new Phone(), 'Phone number. Format this number with a leading \'+\' and a country code, e.g., +16175551212.') ->inject('request') ->inject('response') diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 7b69884d30..8b360607ca 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -163,7 +163,7 @@ App::post('/v1/databases') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_DATABASE) // Model for database needs to be created - ->param('databaseId', '', new CustomId(), 'Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('databaseId', '', new CustomId(), 'Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('name', '', new Text(128), 'Collection name. Max length: 128 chars.') ->inject('response') ->inject('dbForProject') @@ -489,7 +489,7 @@ App::post('/v1/databases/:databaseId/collections') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_COLLECTION) ->param('databaseId', '', new UID(), 'Database ID.') - ->param('collectionId', '', new CustomId(), 'Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('collectionId', '', new CustomId(), 'Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('name', '', new Text(128), 'Collection name. Max length: 128 chars.') ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](/docs/permissions).', true) ->param('documentSecurity', false, new Boolean(true), 'Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](/docs/permissions).', true) @@ -1855,7 +1855,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/documents') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_DOCUMENT) ->param('databaseId', '', new UID(), 'Database ID.') - ->param('documentId', '', new CustomId(), 'Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('documentId', '', new CustomId(), 'Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('collectionId', '', new UID(), 'Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection). Make sure to define attributes before creating documents.') ->param('data', [], new JSON(), 'Document data as JSON object.') ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](/docs/permissions).', true) diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index bfc1ccba42..f1dff5e62c 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -61,7 +61,7 @@ App::post('/v1/functions') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_FUNCTION) - ->param('functionId', '', new CustomId(), 'Function ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('functionId', '', new CustomId(), 'Function ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('name', '', new Text(128), 'Function name. Max length: 128 chars.') ->param('execute', [], new Roles(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of strings with execution roles. By default no user is granted with any execute permissions. [learn more about permissions](https://appwrite.io/docs/permissions). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' roles are allowed, each 64 characters long.') ->param('runtime', '', new WhiteList(array_keys(Config::getParam('runtimes')), true), 'Execution runtime.') diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 1fc60c3725..ce334443ec 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -56,7 +56,7 @@ App::post('/v1/projects') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_PROJECT) - ->param('projectId', '', new CustomId(), 'Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('projectId', '', new CustomId(), 'Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('name', null, new Text(128), 'Project name. Max length: 128 chars.') ->param('teamId', '', new UID(), 'Team unique ID.') ->param('region', App::getEnv('_APP_REGION', 'default'), new Whitelist(array_keys(array_filter(Config::getParam('regions'), fn($config) => !$config['disabled']))), 'Project Region.', true) diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 74c984595e..885c5fc8f1 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -58,7 +58,7 @@ App::post('/v1/storage/buckets') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_BUCKET) - ->param('bucketId', '', new CustomId(), 'Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('bucketId', '', new CustomId(), 'Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('name', '', new Text(128), 'Bucket name') ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](/docs/permissions).', true) ->param('fileSecurity', false, new Boolean(true), 'Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](/docs/permissions).', true) @@ -347,7 +347,7 @@ App::post('/v1/storage/buckets/:bucketId/files') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_FILE) ->param('bucketId', '', new UID(), 'Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](/docs/server/storage#createBucket).') - ->param('fileId', '', new CustomId(), 'File ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('fileId', '', new CustomId(), 'File ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('file', [], new File(), 'Binary file.', false) ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](/docs/permissions).', true) ->inject('request') diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 567560c6a8..019f8b87b1 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -54,7 +54,7 @@ App::post('/v1/teams') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_TEAM) - ->param('teamId', '', new CustomId(), 'Team ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('teamId', '', new CustomId(), 'Team ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('name', null, new Text(128), 'Team name. Max length: 128 chars.') ->param('roles', ['owner'], new ArrayList(new Key(), APP_LIMIT_ARRAY_PARAMS_SIZE), '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). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' roles are allowed, each 32 characters long.', true) ->inject('response') diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 524152aff0..8789ff0a07 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -98,7 +98,7 @@ App::post('/v1/users') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', null, new Email(), 'User email.', true) ->param('phone', null, new Phone(), 'Phone number. Format this number with a leading \'+\' and a country code, e.g., +16175551212.', true) ->param('password', null, new Password(), 'Plain text user password. Must be at least 8 chars.', true) @@ -129,7 +129,7 @@ App::post('/v1/users/bcrypt') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('password', '', new Password(), 'User password hashed using Bcrypt.') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) @@ -159,7 +159,7 @@ App::post('/v1/users/md5') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('password', '', new Password(), 'User password hashed using MD5.') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) @@ -189,7 +189,7 @@ App::post('/v1/users/argon2') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('password', '', new Password(), 'User password hashed using Argon2.') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) @@ -219,7 +219,7 @@ App::post('/v1/users/sha') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('password', '', new Password(), 'User password hashed using SHA.') ->param('passwordVersion', '', new WhiteList(['sha1', 'sha224', 'sha256', 'sha384', 'sha512/224', 'sha512/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512']), "Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512/224', 'sha512/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'", true) @@ -286,7 +286,7 @@ App::post('/v1/users/scrypt') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('password', '', new Password(), 'User password hashed using Scrypt.') ->param('passwordSalt', '', new Text(128), 'Optional salt used to hash password.') @@ -329,7 +329,7 @@ App::post('/v1/users/scrypt-modified') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('password', '', new Password(), 'User password hashed using Scrypt Modified.') ->param('passwordSalt', '', new Text(128), 'Salt used to hash password.') From d9edc65e9d9593e53a2d6a082198d108f0dabe8e Mon Sep 17 00:00:00 2001 From: "Vincent (Wen Yu) Ge" Date: Fri, 13 Jan 2023 15:30:48 -0500 Subject: [PATCH 51/94] Generate specs for 1.2.x --- app/config/specs/open-api3-1.2.x-client.json | 2 +- app/config/specs/open-api3-1.2.x-console.json | 2 +- app/config/specs/open-api3-1.2.x-server.json | 2 +- app/config/specs/swagger2-1.2.x-client.json | 2 +- app/config/specs/swagger2-1.2.x-console.json | 2 +- app/config/specs/swagger2-1.2.x-server.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/config/specs/open-api3-1.2.x-client.json b/app/config/specs/open-api3-1.2.x-client.json index f91ca29452..33af5343bd 100644 --- a/app/config/specs/open-api3-1.2.x-client.json +++ b/app/config/specs/open-api3-1.2.x-client.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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-1.2.x-console.json b/app/config/specs/open-api3-1.2.x-console.json index 86521c96f8..fb7794754e 100644 --- a/app/config/specs/open-api3-1.2.x-console.json +++ b/app/config/specs/open-api3-1.2.x-console.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"patch":{"summary":"Update Project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":111,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","x-example":1}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/{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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":123,"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":107,"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]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 generate a random ID with `ID.unique()`. Valid chars are 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"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 generate a random ID with `ID.unique()`. Valid chars are 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]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"patch":{"summary":"Update Project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":111,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","x-example":1}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/{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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":123,"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":107,"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]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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-1.2.x-server.json b/app/config/specs/open-api3-1.2.x-server.json index 0a52f94b50..1d3e14c819 100644 --- a/app/config/specs/open-api3-1.2.x-server.json +++ b/app/config/specs/open-api3-1.2.x-server.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 generate a random ID with `ID.unique()`. Valid chars are 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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-1.2.x-client.json b/app/config/specs/swagger2-1.2.x-client.json index 294c595283..8dfaa5d5c7 100644 --- a/app/config/specs/swagger2-1.2.x-client.json +++ b/app/config/specs/swagger2-1.2.x-client.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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-1.2.x-console.json b/app/config/specs/swagger2-1.2.x-console.json index 3534179688..e7dbf42bf0 100644 --- a/app/config/specs/swagger2-1.2.x-console.json +++ b/app/config/specs/swagger2-1.2.x-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"patch":{"summary":"Update Project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":111,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/{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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":123,"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":107,"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":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"patch":{"summary":"Update Project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":111,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/{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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":123,"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":107,"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":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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-1.2.x-server.json b/app/config/specs/swagger2-1.2.x-server.json index 4eb6e145b0..49ffa3df74 100644 --- a/app/config/specs/swagger2-1.2.x-server.json +++ b/app/config/specs/swagger2-1.2.x-server.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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 From 4975a769e7861aa9218884d5a852f7ce67c6d820 Mon Sep 17 00:00:00 2001 From: Aayush Bisen Date: Sat, 14 Jan 2023 09:39:29 +0000 Subject: [PATCH 52/94] add restart policy in root compose file Fixes #4986 --- docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-compose.yml b/docker-compose.yml index df1d5a78f3..8ba1ff0566 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -554,6 +554,7 @@ services: entrypoint: worker-messaging <<: *x-logging container_name: appwrite-worker-messaging + restart: unless-stopped image: appwrite-dev networks: - appwrite From aa5a45ba79003c70a3f4601576918050d987a02e Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 16 Jan 2023 10:12:14 +0200 Subject: [PATCH 53/94] audit + abuse upgrade --- app/console | 2 +- composer.json | 6 ++-- composer.lock | 99 ++++++++++++++++++++++++--------------------------- 3 files changed, 50 insertions(+), 57 deletions(-) diff --git a/app/console b/app/console index af3d741ae8..5e2a40c1e3 160000 --- a/app/console +++ b/app/console @@ -1 +1 @@ -Subproject commit af3d741ae8f02c2e16b8b4ea4664a3f8970290fd +Subproject commit 5e2a40c1e397bd341a432698c9d76a3f96315841 diff --git a/composer.json b/composer.json index 129075299b..439d0dc967 100644 --- a/composer.json +++ b/composer.json @@ -43,13 +43,13 @@ "ext-sockets": "*", "appwrite/php-clamav": "1.1.*", "appwrite/php-runtimes": "0.11.*", - "utopia-php/abuse": "0.16.*", + "utopia-php/abuse": "0.17.*", "utopia-php/analytics": "0.2.*", - "utopia-php/audit": "0.17.*", + "utopia-php/audit": "0.19.*", "utopia-php/cache": "0.8.*", "utopia-php/cli": "0.13.*", "utopia-php/config": "0.2.*", - "utopia-php/database": "dev-feat-technical-debt as 0.28.0", + "utopia-php/database": "0.29.0", "utopia-php/preloader": "0.2.*", "utopia-php/domains": "1.1.*", "utopia-php/framework": "0.25.*", diff --git a/composer.lock b/composer.lock index ce6b1fb837..2e997469b5 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": "2e56cb6c348ecdf295ddc3f45731dcdd", + "content-hash": "d96a1980b2fb23e083b89d50140b95a3", "packages": [ { "name": "adhocore/jwt", @@ -1808,25 +1808,26 @@ }, { "name": "utopia-php/abuse", - "version": "0.16.0", + "version": "0.17.0", "source": { "type": "git", "url": "https://github.com/utopia-php/abuse.git", - "reference": "6370d9150425460416583feba0990504ac789e98" + "reference": "3dee975b501767d49a9cf71dbdc4707bf979a91b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/abuse/zipball/6370d9150425460416583feba0990504ac789e98", - "reference": "6370d9150425460416583feba0990504ac789e98", + "url": "https://api.github.com/repos/utopia-php/abuse/zipball/3dee975b501767d49a9cf71dbdc4707bf979a91b", + "reference": "3dee975b501767d49a9cf71dbdc4707bf979a91b", "shasum": "" }, "require": { "ext-curl": "*", "ext-pdo": "*", "php": ">=8.0", - "utopia-php/database": "0.28.*" + "utopia-php/database": "0.29.*" }, "require-dev": { + "laravel/pint": "1.2.*", "phpunit/phpunit": "^9.4", "vimeo/psalm": "4.0.1" }, @@ -1856,9 +1857,9 @@ ], "support": { "issues": "https://github.com/utopia-php/abuse/issues", - "source": "https://github.com/utopia-php/abuse/tree/0.16.0" + "source": "https://github.com/utopia-php/abuse/tree/0.17.0" }, - "time": "2022-10-31T14:46:41+00:00" + "time": "2023-01-16T08:00:59+00:00" }, { "name": "utopia-php/analytics", @@ -1917,24 +1918,25 @@ }, { "name": "utopia-php/audit", - "version": "0.17.0", + "version": "0.19.0", "source": { "type": "git", "url": "https://github.com/utopia-php/audit.git", - "reference": "455471bd4de8d74026809e843f8c9740eb32922c" + "reference": "fc552228ce7690854066d9ecea104a4d076117ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/audit/zipball/455471bd4de8d74026809e843f8c9740eb32922c", - "reference": "455471bd4de8d74026809e843f8c9740eb32922c", + "url": "https://api.github.com/repos/utopia-php/audit/zipball/fc552228ce7690854066d9ecea104a4d076117ae", + "reference": "fc552228ce7690854066d9ecea104a4d076117ae", "shasum": "" }, "require": { "ext-pdo": "*", "php": ">=8.0", - "utopia-php/database": "0.28.*" + "utopia-php/database": "0.29.*" }, "require-dev": { + "laravel/pint": "1.2.*", "phpunit/phpunit": "^9.3", "vimeo/psalm": "4.0.1" }, @@ -1958,9 +1960,9 @@ ], "support": { "issues": "https://github.com/utopia-php/audit/issues", - "source": "https://github.com/utopia-php/audit/tree/0.17.0" + "source": "https://github.com/utopia-php/audit/tree/0.19.0" }, - "time": "2022-10-31T14:44:52+00:00" + "time": "2023-01-16T08:00:46+00:00" }, { "name": "utopia-php/cache", @@ -2117,16 +2119,16 @@ }, { "name": "utopia-php/database", - "version": "dev-feat-technical-debt", + "version": "0.29.0", "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "08ee675eace0a4ab7ae779fec842a436e9cad3db" + "reference": "d4449bca6a6ca620588df6575beff35c7e8dcadd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/08ee675eace0a4ab7ae779fec842a436e9cad3db", - "reference": "08ee675eace0a4ab7ae779fec842a436e9cad3db", + "url": "https://api.github.com/repos/utopia-php/database/zipball/d4449bca6a6ca620588df6575beff35c7e8dcadd", + "reference": "d4449bca6a6ca620588df6575beff35c7e8dcadd", "shasum": "" }, "require": { @@ -2166,9 +2168,9 @@ ], "support": { "issues": "https://github.com/utopia-php/database/issues", - "source": "https://github.com/utopia-php/database/tree/feat-technical-debt" + "source": "https://github.com/utopia-php/database/tree/0.29.0" }, - "time": "2022-12-19T07:31:10+00:00" + "time": "2023-01-15T23:51:06+00:00" }, { "name": "utopia-php/domains", @@ -3049,30 +3051,30 @@ }, { "name": "doctrine/instantiator", - "version": "1.4.1", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^9 || ^11", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^0.16 || ^1", "phpstan/phpstan": "^1.4", "phpstan/phpstan-phpunit": "^1", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "vimeo/psalm": "^4.30 || ^5.4" }, "type": "library", "autoload": { @@ -3099,7 +3101,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" }, "funding": [ { @@ -3115,7 +3117,7 @@ "type": "tidelift" } ], - "time": "2022-03-03T08:28:38+00:00" + "time": "2022-12-30T00:15:36+00:00" }, { "name": "matthiasmullie/minify", @@ -3701,16 +3703,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.22", + "version": "9.2.23", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "e4bf60d2220b4baaa0572986b5d69870226b06df" + "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e4bf60d2220b4baaa0572986b5d69870226b06df", - "reference": "e4bf60d2220b4baaa0572986b5d69870226b06df", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", + "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", "shasum": "" }, "require": { @@ -3766,7 +3768,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.22" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.23" }, "funding": [ { @@ -3774,7 +3776,7 @@ "type": "github" } ], - "time": "2022-12-18T16:40:55+00:00" + "time": "2022-12-28T12:41:10+00:00" }, { "name": "phpunit/php-file-iterator", @@ -5448,16 +5450,16 @@ }, { "name": "twig/twig", - "version": "v3.4.3", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58" + "reference": "3ffcf4b7d890770466da3b2666f82ac054e7ec72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/c38fd6b0b7f370c198db91ffd02e23b517426b58", - "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/3ffcf4b7d890770466da3b2666f82ac054e7ec72", + "reference": "3ffcf4b7d890770466da3b2666f82ac054e7ec72", "shasum": "" }, "require": { @@ -5472,7 +5474,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "3.5-dev" } }, "autoload": { @@ -5508,7 +5510,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.4.3" + "source": "https://github.com/twigphp/Twig/tree/v3.5.0" }, "funding": [ { @@ -5520,21 +5522,12 @@ "type": "tidelift" } ], - "time": "2022-09-28T08:42:51+00:00" - } - ], - "aliases": [ - { - "package": "utopia-php/database", - "version": "dev-feat-technical-debt", - "alias": "0.28.0", - "alias_normalized": "0.28.0.0" + "time": "2022-12-27T12:28:18+00:00" } ], + "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "utopia-php/database": 20 - }, + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { From f5cc2e43f4660e108fb5b028cc97e85747aca5de Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 16 Jan 2023 10:32:15 +0200 Subject: [PATCH 54/94] conflics --- app/init.php | 2 - composer.lock | 420 +++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 381 insertions(+), 41 deletions(-) diff --git a/app/init.php b/app/init.php index 9c0a9fa2d6..13d0e88d7d 100644 --- a/app/init.php +++ b/app/init.php @@ -52,13 +52,11 @@ use Utopia\Config\Config; use Utopia\Database\Adapter\MariaDB; use Utopia\Database\Database; use Utopia\Database\Document; -use Utopia\Database\ID; use Utopia\Database\Query; use Utopia\Database\Validator\Authorization; use Utopia\Database\Validator\DatetimeValidator; use Utopia\Database\Validator\Structure; use Utopia\Locale\Locale; -use Utopia\Logger\Logger; use Utopia\Messaging\Adapters\SMS\Mock; use Utopia\Messaging\Adapters\SMS\Msg91; use Utopia\Messaging\Adapters\SMS\Telesign; diff --git a/composer.lock b/composer.lock index d09230b398..b89d0dbb16 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": "dbc502462e4afa550b1a1bc3898020b3", + "content-hash": "f5b808dcd123e264f312c4c98789eeaf", "packages": [ { "name": "adhocore/jwt", @@ -345,6 +345,79 @@ }, "time": "2022-11-09T01:18:39+00:00" }, + { + "name": "composer/package-versions-deprecated", + "version": "1.11.99.5", + "source": { + "type": "git", + "url": "https://github.com/composer/package-versions-deprecated.git", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1.0 || ^2.0", + "php": "^7 || ^8" + }, + "replace": { + "ocramius/package-versions": "1.11.99" + }, + "require-dev": { + "composer/composer": "^1.9.3 || ^2.0@dev", + "ext-zip": "^1.13", + "phpunit/phpunit": "^6.5 || ^7" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "PackageVersions\\": "src/PackageVersions" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "support": { + "issues": "https://github.com/composer/package-versions-deprecated/issues", + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-01-17T14:14:24+00:00" + }, { "name": "dragonmantank/cron-expression", "version": "v3.3.1", @@ -804,6 +877,61 @@ "abandoned": true, "time": "2020-12-26T17:45:17+00:00" }, + { + "name": "jean85/pretty-package-versions", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "1e0104b46f045868f11942aea058cd7186d6c303" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/1e0104b46f045868f11942aea058cd7186d6c303", + "reference": "1e0104b46f045868f11942aea058cd7186d6c303", + "shasum": "" + }, + "require": { + "composer/package-versions-deprecated": "^1.8.0", + "php": "^7.0|^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0|^8.5|^9.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A wrapper for ocramius/package-versions to get pretty versions strings", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/1.6.0" + }, + "time": "2021-02-04T16:20:16+00:00" + }, { "name": "laravel/pint", "version": "v1.2.1", @@ -939,6 +1067,74 @@ }, "time": "2022-04-11T09:58:17+00:00" }, + { + "name": "mongodb/mongodb", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/mongodb/mongo-php-library.git", + "reference": "953dbc19443aa9314c44b7217a16873347e6840d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/953dbc19443aa9314c44b7217a16873347e6840d", + "reference": "953dbc19443aa9314c44b7217a16873347e6840d", + "shasum": "" + }, + "require": { + "ext-hash": "*", + "ext-json": "*", + "ext-mongodb": "^1.8.1", + "jean85/pretty-package-versions": "^1.2", + "php": "^7.0 || ^8.0", + "symfony/polyfill-php80": "^1.19" + }, + "require-dev": { + "squizlabs/php_codesniffer": "^3.5, <3.5.5", + "symfony/phpunit-bridge": "5.x-dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "MongoDB\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Andreas Braun", + "email": "andreas.braun@mongodb.com" + }, + { + "name": "Jeremy Mikola", + "email": "jmikola@gmail.com" + } + ], + "description": "MongoDB driver library", + "homepage": "https://jira.mongodb.org/browse/PHPLIB", + "keywords": [ + "database", + "driver", + "mongodb", + "persistence" + ], + "support": { + "issues": "https://github.com/mongodb/mongo-php-library/issues", + "source": "https://github.com/mongodb/mongo-php-library/tree/1.8.0" + }, + "time": "2020-11-25T12:26:02+00:00" + }, { "name": "mustangostang/spyc", "version": "0.6.3", @@ -1528,26 +1724,110 @@ "time": "2022-11-25T10:21:52+00:00" }, { - "name": "utopia-php/abuse", - "version": "0.16.0", + "name": "symfony/polyfill-php80", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/utopia-php/abuse.git", - "reference": "6370d9150425460416583feba0990504ac789e98" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/abuse/zipball/6370d9150425460416583feba0990504ac789e98", - "reference": "6370d9150425460416583feba0990504ac789e98", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "utopia-php/abuse", + "version": "0.17.0", + "source": { + "type": "git", + "url": "https://github.com/utopia-php/abuse.git", + "reference": "3dee975b501767d49a9cf71dbdc4707bf979a91b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/utopia-php/abuse/zipball/3dee975b501767d49a9cf71dbdc4707bf979a91b", + "reference": "3dee975b501767d49a9cf71dbdc4707bf979a91b", "shasum": "" }, "require": { "ext-curl": "*", "ext-pdo": "*", "php": ">=8.0", - "utopia-php/database": "0.28.*" + "utopia-php/database": "0.29.*" }, "require-dev": { + "laravel/pint": "1.2.*", "phpunit/phpunit": "^9.4", "vimeo/psalm": "4.0.1" }, @@ -1577,9 +1857,9 @@ ], "support": { "issues": "https://github.com/utopia-php/abuse/issues", - "source": "https://github.com/utopia-php/abuse/tree/0.16.0" + "source": "https://github.com/utopia-php/abuse/tree/0.17.0" }, - "time": "2022-10-31T14:46:41+00:00" + "time": "2023-01-16T08:00:59+00:00" }, { "name": "utopia-php/analytics", @@ -1638,24 +1918,25 @@ }, { "name": "utopia-php/audit", - "version": "0.17.0", + "version": "0.19.0", "source": { "type": "git", "url": "https://github.com/utopia-php/audit.git", - "reference": "455471bd4de8d74026809e843f8c9740eb32922c" + "reference": "fc552228ce7690854066d9ecea104a4d076117ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/audit/zipball/455471bd4de8d74026809e843f8c9740eb32922c", - "reference": "455471bd4de8d74026809e843f8c9740eb32922c", + "url": "https://api.github.com/repos/utopia-php/audit/zipball/fc552228ce7690854066d9ecea104a4d076117ae", + "reference": "fc552228ce7690854066d9ecea104a4d076117ae", "shasum": "" }, "require": { "ext-pdo": "*", "php": ">=8.0", - "utopia-php/database": "0.28.*" + "utopia-php/database": "0.29.*" }, "require-dev": { + "laravel/pint": "1.2.*", "phpunit/phpunit": "^9.3", "vimeo/psalm": "4.0.1" }, @@ -1679,9 +1960,9 @@ ], "support": { "issues": "https://github.com/utopia-php/audit/issues", - "source": "https://github.com/utopia-php/audit/tree/0.17.0" + "source": "https://github.com/utopia-php/audit/tree/0.19.0" }, - "time": "2022-10-31T14:44:52+00:00" + "time": "2023-01-16T08:00:46+00:00" }, { "name": "utopia-php/cache", @@ -1838,22 +2119,23 @@ }, { "name": "utopia-php/database", - "version": "0.28.0", + "version": "0.29.0", "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "ef6506af1c09c22f5dc1e7859159d323f7fafa94" + "reference": "d4449bca6a6ca620588df6575beff35c7e8dcadd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/ef6506af1c09c22f5dc1e7859159d323f7fafa94", - "reference": "ef6506af1c09c22f5dc1e7859159d323f7fafa94", + "url": "https://api.github.com/repos/utopia-php/database/zipball/d4449bca6a6ca620588df6575beff35c7e8dcadd", + "reference": "d4449bca6a6ca620588df6575beff35c7e8dcadd", "shasum": "" }, "require": { "php": ">=8.0", "utopia-php/cache": "0.8.*", - "utopia-php/framework": "0.*.*" + "utopia-php/framework": "0.*.*", + "utopia-php/mongo": "0.0.2" }, "require-dev": { "ext-mongodb": "*", @@ -1886,9 +2168,9 @@ ], "support": { "issues": "https://github.com/utopia-php/database/issues", - "source": "https://github.com/utopia-php/database/tree/0.28.0" + "source": "https://github.com/utopia-php/database/tree/0.29.0" }, - "time": "2022-10-31T09:58:46+00:00" + "time": "2023-01-15T23:51:06+00:00" }, { "name": "utopia-php/domains", @@ -2211,6 +2493,66 @@ }, "time": "2022-09-29T11:22:48+00:00" }, + { + "name": "utopia-php/mongo", + "version": "0.0.2", + "source": { + "type": "git", + "url": "https://github.com/utopia-php/mongo.git", + "reference": "62f9a9c0201af91b6d0dd4f0aa8a335ec9b56a1e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/utopia-php/mongo/zipball/62f9a9c0201af91b6d0dd4f0aa8a335ec9b56a1e", + "reference": "62f9a9c0201af91b6d0dd4f0aa8a335ec9b56a1e", + "shasum": "" + }, + "require": { + "ext-mongodb": "*", + "mongodb/mongodb": "1.8.0", + "php": ">=8.0" + }, + "require-dev": { + "fakerphp/faker": "^1.14", + "laravel/pint": "1.2.*", + "phpstan/phpstan": "1.8.*", + "phpunit/phpunit": "^9.4", + "swoole/ide-helper": "4.8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Utopia\\Mongo\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eldad Fux", + "email": "eldad@appwrite.io" + }, + { + "name": "Wess", + "email": "wess@appwrite.io" + } + ], + "description": "A simple library to manage Mongo database", + "keywords": [ + "database", + "mongo", + "php", + "upf", + "utopia" + ], + "support": { + "issues": "https://github.com/utopia-php/mongo/issues", + "source": "https://github.com/utopia-php/mongo/tree/0.0.2" + }, + "time": "2022-11-08T11:58:46+00:00" + }, { "name": "utopia-php/orchestration", "version": "0.6.0", @@ -2652,16 +2994,16 @@ }, { "name": "webonyx/graphql-php", - "version": "v14.11.8", + "version": "v14.11.9", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "04a48693acd785330eefd3b0e4fa67df8dfee7c3" + "reference": "ff91c9f3cf241db702e30b2c42bcc0920e70ac70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/04a48693acd785330eefd3b0e4fa67df8dfee7c3", - "reference": "04a48693acd785330eefd3b0e4fa67df8dfee7c3", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/ff91c9f3cf241db702e30b2c42bcc0920e70ac70", + "reference": "ff91c9f3cf241db702e30b2c42bcc0920e70ac70", "shasum": "" }, "require": { @@ -2706,7 +3048,7 @@ ], "support": { "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v14.11.8" + "source": "https://github.com/webonyx/graphql-php/tree/v14.11.9" }, "funding": [ { @@ -2714,7 +3056,7 @@ "type": "open_collective" } ], - "time": "2022-09-21T15:35:03+00:00" + "time": "2023-01-06T12:12:50+00:00" } ], "packages-dev": [ @@ -2771,30 +3113,30 @@ }, { "name": "doctrine/instantiator", - "version": "1.4.1", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^9 || ^11", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^0.16 || ^1", "phpstan/phpstan": "^1.4", "phpstan/phpstan-phpunit": "^1", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "vimeo/psalm": "^4.30 || ^5.4" }, "type": "library", "autoload": { @@ -2821,7 +3163,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" }, "funding": [ { @@ -2837,7 +3179,7 @@ "type": "tidelift" } ], - "time": "2022-03-03T08:28:38+00:00" + "time": "2022-12-30T00:15:36+00:00" }, { "name": "matthiasmullie/minify", @@ -5271,5 +5613,5 @@ "platform-overrides": { "php": "8.0" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.2.0" } From 48e2bf1c3e7bcf05ec655ecc3c4364692eac6a12 Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 16 Jan 2023 11:25:40 +0200 Subject: [PATCH 55/94] Helpers GraphQL --- tests/e2e/Services/GraphQL/AbuseTest.php | 6 +++--- tests/e2e/Services/GraphQL/AccountTest.php | 2 +- tests/e2e/Services/GraphQL/AuthTest.php | 6 +++--- tests/e2e/Services/GraphQL/BatchTest.php | 2 +- tests/e2e/Services/GraphQL/ContentTypeTest.php | 6 +++--- tests/e2e/Services/GraphQL/DatabaseClientTest.php | 6 +++--- tests/e2e/Services/GraphQL/DatabaseServerTest.php | 6 +++--- tests/e2e/Services/GraphQL/FunctionsClientTest.php | 4 ++-- tests/e2e/Services/GraphQL/FunctionsServerTest.php | 4 ++-- tests/e2e/Services/GraphQL/ScopeTest.php | 2 +- tests/e2e/Services/GraphQL/StorageClientTest.php | 6 +++--- tests/e2e/Services/GraphQL/StorageServerTest.php | 6 +++--- tests/e2e/Services/GraphQL/TeamsClientTest.php | 2 +- tests/e2e/Services/GraphQL/TeamsServerTest.php | 2 +- tests/e2e/Services/GraphQL/UsersTest.php | 2 +- 15 files changed, 31 insertions(+), 31 deletions(-) diff --git a/tests/e2e/Services/GraphQL/AbuseTest.php b/tests/e2e/Services/GraphQL/AbuseTest.php index 7009ded82e..48ee64d141 100644 --- a/tests/e2e/Services/GraphQL/AbuseTest.php +++ b/tests/e2e/Services/GraphQL/AbuseTest.php @@ -7,9 +7,9 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; use Utopia\App; -use Utopia\Database\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\ID; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class AbuseTest extends Scope { diff --git a/tests/e2e/Services/GraphQL/AccountTest.php b/tests/e2e/Services/GraphQL/AccountTest.php index 0d2ccf62cc..7fd70b5015 100644 --- a/tests/e2e/Services/GraphQL/AccountTest.php +++ b/tests/e2e/Services/GraphQL/AccountTest.php @@ -6,7 +6,7 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideClient; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; class AccountTest extends Scope { diff --git a/tests/e2e/Services/GraphQL/AuthTest.php b/tests/e2e/Services/GraphQL/AuthTest.php index 8eb0937d80..c331fb8437 100644 --- a/tests/e2e/Services/GraphQL/AuthTest.php +++ b/tests/e2e/Services/GraphQL/AuthTest.php @@ -6,9 +6,9 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideClient; -use Utopia\Database\ID; -use Utopia\Database\Role; -use Utopia\Database\Permission; +use Utopia\Database\Helpers\ID; +use Utopia\Database\Helpers\Role; +use Utopia\Database\Helpers\Permission; class AuthTest extends Scope { diff --git a/tests/e2e/Services/GraphQL/BatchTest.php b/tests/e2e/Services/GraphQL/BatchTest.php index dcb19e171a..7082d23677 100644 --- a/tests/e2e/Services/GraphQL/BatchTest.php +++ b/tests/e2e/Services/GraphQL/BatchTest.php @@ -6,7 +6,7 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideClient; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; class BatchTest extends Scope { diff --git a/tests/e2e/Services/GraphQL/ContentTypeTest.php b/tests/e2e/Services/GraphQL/ContentTypeTest.php index 4a086feb2e..da885a2a83 100644 --- a/tests/e2e/Services/GraphQL/ContentTypeTest.php +++ b/tests/e2e/Services/GraphQL/ContentTypeTest.php @@ -7,9 +7,9 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; -use Utopia\Database\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\ID; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class ContentTypeTest extends Scope { diff --git a/tests/e2e/Services/GraphQL/DatabaseClientTest.php b/tests/e2e/Services/GraphQL/DatabaseClientTest.php index 9353e681b2..3853a3fc17 100644 --- a/tests/e2e/Services/GraphQL/DatabaseClientTest.php +++ b/tests/e2e/Services/GraphQL/DatabaseClientTest.php @@ -6,9 +6,9 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideClient; -use Utopia\Database\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\ID; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class DatabaseClientTest extends Scope { diff --git a/tests/e2e/Services/GraphQL/DatabaseServerTest.php b/tests/e2e/Services/GraphQL/DatabaseServerTest.php index fd5545e6cd..bc5bca60ca 100644 --- a/tests/e2e/Services/GraphQL/DatabaseServerTest.php +++ b/tests/e2e/Services/GraphQL/DatabaseServerTest.php @@ -7,9 +7,9 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; -use Utopia\Database\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\ID; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class DatabaseServerTest extends Scope { diff --git a/tests/e2e/Services/GraphQL/FunctionsClientTest.php b/tests/e2e/Services/GraphQL/FunctionsClientTest.php index 7bfcd66d4d..d5b50250d4 100644 --- a/tests/e2e/Services/GraphQL/FunctionsClientTest.php +++ b/tests/e2e/Services/GraphQL/FunctionsClientTest.php @@ -7,8 +7,8 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideClient; -use Utopia\Database\ID; -use Utopia\Database\Role; +use Utopia\Database\Helpers\ID; +use Utopia\Database\Helpers\Role; class FunctionsClientTest extends Scope { diff --git a/tests/e2e/Services/GraphQL/FunctionsServerTest.php b/tests/e2e/Services/GraphQL/FunctionsServerTest.php index a51072bb92..75aa0d5d04 100644 --- a/tests/e2e/Services/GraphQL/FunctionsServerTest.php +++ b/tests/e2e/Services/GraphQL/FunctionsServerTest.php @@ -7,8 +7,8 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; -use Utopia\Database\ID; -use Utopia\Database\Role; +use Utopia\Database\Helpers\ID; +use Utopia\Database\Helpers\Role; class FunctionsServerTest extends Scope { diff --git a/tests/e2e/Services/GraphQL/ScopeTest.php b/tests/e2e/Services/GraphQL/ScopeTest.php index 03be6e3f70..a8b5b7cea4 100644 --- a/tests/e2e/Services/GraphQL/ScopeTest.php +++ b/tests/e2e/Services/GraphQL/ScopeTest.php @@ -7,7 +7,7 @@ use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideClient; use Tests\E2E\Scopes\SideServer; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; class ScopeTest extends Scope { diff --git a/tests/e2e/Services/GraphQL/StorageClientTest.php b/tests/e2e/Services/GraphQL/StorageClientTest.php index 55fc10b064..9896598c2d 100644 --- a/tests/e2e/Services/GraphQL/StorageClientTest.php +++ b/tests/e2e/Services/GraphQL/StorageClientTest.php @@ -7,9 +7,9 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideClient; -use Utopia\Database\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\ID; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class StorageClientTest extends Scope { diff --git a/tests/e2e/Services/GraphQL/StorageServerTest.php b/tests/e2e/Services/GraphQL/StorageServerTest.php index fc6c23f12d..afaef08321 100644 --- a/tests/e2e/Services/GraphQL/StorageServerTest.php +++ b/tests/e2e/Services/GraphQL/StorageServerTest.php @@ -7,9 +7,9 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; -use Utopia\Database\ID; -use Utopia\Database\Permission; -use Utopia\Database\Role; +use Utopia\Database\Helpers\ID; +use Utopia\Database\Helpers\Permission; +use Utopia\Database\Helpers\Role; class StorageServerTest extends Scope { diff --git a/tests/e2e/Services/GraphQL/TeamsClientTest.php b/tests/e2e/Services/GraphQL/TeamsClientTest.php index 6fb2ba87e6..87dbfcca00 100644 --- a/tests/e2e/Services/GraphQL/TeamsClientTest.php +++ b/tests/e2e/Services/GraphQL/TeamsClientTest.php @@ -6,7 +6,7 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideClient; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; class TeamsClientTest extends Scope { diff --git a/tests/e2e/Services/GraphQL/TeamsServerTest.php b/tests/e2e/Services/GraphQL/TeamsServerTest.php index 118086834a..41577e6f42 100644 --- a/tests/e2e/Services/GraphQL/TeamsServerTest.php +++ b/tests/e2e/Services/GraphQL/TeamsServerTest.php @@ -6,7 +6,7 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; class TeamsServerTest extends Scope { diff --git a/tests/e2e/Services/GraphQL/UsersTest.php b/tests/e2e/Services/GraphQL/UsersTest.php index 99229b46d7..9bd503df0f 100644 --- a/tests/e2e/Services/GraphQL/UsersTest.php +++ b/tests/e2e/Services/GraphQL/UsersTest.php @@ -6,7 +6,7 @@ use Tests\E2E\Client; use Tests\E2E\Scopes\ProjectCustom; use Tests\E2E\Scopes\Scope; use Tests\E2E\Scopes\SideServer; -use Utopia\Database\ID; +use Utopia\Database\Helpers\ID; use Utopia\Database\Query; class UsersTest extends Scope From 625aa8ada63aa33d0933d17ed9dd733a21249b1b Mon Sep 17 00:00:00 2001 From: fogelito Date: Mon, 16 Jan 2023 17:11:13 +0200 Subject: [PATCH 56/94] Some changes --- composer.json | 1 - 1 file changed, 1 deletion(-) diff --git a/composer.json b/composer.json index b57e438056..885b41bd9a 100644 --- a/composer.json +++ b/composer.json @@ -58,7 +58,6 @@ "utopia-php/logger": "0.3.*", "utopia-php/messaging": "0.1.*", "utopia-php/orchestration": "0.6.*", - "utopia-php/preloader": "0.2.*", "utopia-php/registry": "0.5.*", "utopia-php/storage": "0.13.*", "utopia-php/swoole": "0.5.*", From d53456c6ed6aca042cb4180846e47295e66dffac Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 17 Jan 2023 01:17:37 +0000 Subject: [PATCH 57/94] fix test --- tests/e2e/Services/Account/AccountCustomClientTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/e2e/Services/Account/AccountCustomClientTest.php b/tests/e2e/Services/Account/AccountCustomClientTest.php index 9971b1bca3..aadef9708f 100644 --- a/tests/e2e/Services/Account/AccountCustomClientTest.php +++ b/tests/e2e/Services/Account/AccountCustomClientTest.php @@ -40,6 +40,7 @@ class AccountCustomClientTest extends Scope 'provider' => $provider, 'appId' => $appId, 'secret' => $secret, + 'enabled' => true, ]); $this->assertEquals($response['headers']['status-code'], 200); @@ -496,6 +497,7 @@ class AccountCustomClientTest extends Scope 'provider' => $provider, 'appId' => $appId, 'secret' => $secret, + 'enabled' => true, ]); $this->assertEquals($response['headers']['status-code'], 200); From 536d36be7d346159429a1aca090085e72e3d3ba3 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 17 Jan 2023 17:31:14 +1300 Subject: [PATCH 58/94] Fix delete recursion --- app/workers/deletes.php | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/app/workers/deletes.php b/app/workers/deletes.php index 2fbaf73b18..e840f86097 100644 --- a/app/workers/deletes.php +++ b/app/workers/deletes.php @@ -258,11 +258,8 @@ class DeletesV1 extends Worker // Delete project tables $dbForProject = $this->getProjectDB($projectId, $document); - $limit = 50; - $offset = 0; - while (true) { - $collections = $dbForProject->listCollections($limit, $offset); + $collections = $dbForProject->listCollections(); if (empty($collections)) { break; @@ -271,8 +268,6 @@ class DeletesV1 extends Worker foreach ($collections as $collection) { $dbForProject->deleteCollection($collection->getId()); } - - $offset += $limit; } // Delete metadata tables From 58c4c3da1e6a0229b380f98188faa53587fd1590 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Fri, 20 Jan 2023 09:52:11 +0000 Subject: [PATCH 59/94] feat: update changelog --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 5103e39a11..a6fa76fff7 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,7 @@ # Version 1.2.1 ## Bugs - Fix a few null safety warnings [#4654](https://github.com/appwrite/appwrite/pull/4654) +- Fix timestamp format in Realtime response [#4515](https://github.com/appwrite/appwrite/pull/4515) # Version 1.2.0 ## Features From b25dc38a637d4a94a6cf93390f1a797bef70ec97 Mon Sep 17 00:00:00 2001 From: "Vincent (Wen Yu) Ge" Date: Fri, 20 Jan 2023 22:22:16 +0000 Subject: [PATCH 60/94] clarify custom ID vs unique ID --- app/controllers/api/account.php | 6 +++--- app/controllers/api/databases.php | 6 +++--- app/controllers/api/functions.php | 2 +- app/controllers/api/projects.php | 2 +- app/controllers/api/storage.php | 4 ++-- app/controllers/api/teams.php | 2 +- app/controllers/api/users.php | 16 ++++++++-------- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index abda652b48..856bf99001 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -62,7 +62,7 @@ App::post('/v1/account') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_ACCOUNT) ->label('abuse-limit', 10) - ->param('userId', '', new CustomId(), 'Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('password', '', new Password(), 'User password. Must be at least 8 chars.') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) @@ -621,7 +621,7 @@ App::post('/v1/account/sessions/magic-url') ->label('sdk.response.model', Response::MODEL_TOKEN) ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},email:{param-email}') - ->param('userId', '', new CustomId(), 'Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('url', '', fn($clients) => new Host($clients), 'URL to redirect the user back to your app from the magic URL login. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https://cheatsheetseries.owasp.org/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.', true, ['clients']) ->inject('request') @@ -898,7 +898,7 @@ App::post('/v1/account/sessions/phone') ->label('sdk.response.model', Response::MODEL_TOKEN) ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},email:{param-email}') - ->param('userId', '', new CustomId(), 'Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('phone', '', new Phone(), 'Phone number. Format this number with a leading \'+\' and a country code, e.g., +16175551212.') ->inject('request') ->inject('response') diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 01703b8e99..42f2521bda 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -162,7 +162,7 @@ App::post('/v1/databases') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_DATABASE) // Model for database needs to be created - ->param('databaseId', '', new CustomId(), 'Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('databaseId', '', new CustomId(), 'Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('name', '', new Text(128), 'Collection name. Max length: 128 chars.') ->inject('response') ->inject('dbForProject') @@ -488,7 +488,7 @@ App::post('/v1/databases/:databaseId/collections') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_COLLECTION) ->param('databaseId', '', new UID(), 'Database ID.') - ->param('collectionId', '', new CustomId(), 'Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('collectionId', '', new CustomId(), 'Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('name', '', new Text(128), 'Collection name. Max length: 128 chars.') ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](/docs/permissions).', true) ->param('documentSecurity', false, new Boolean(true), 'Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](/docs/permissions).', true) @@ -1853,7 +1853,7 @@ App::post('/v1/databases/:databaseId/collections/:collectionId/documents') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_DOCUMENT) ->param('databaseId', '', new UID(), 'Database ID.') - ->param('documentId', '', new CustomId(), 'Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('documentId', '', new CustomId(), 'Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('collectionId', '', new UID(), 'Collection ID. You can create a new collection using the Database service [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection). Make sure to define attributes before creating documents.') ->param('data', [], new JSON(), 'Document data as JSON object.') ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](/docs/permissions).', true) diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 5c70ec422a..b4ae0c8232 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -61,7 +61,7 @@ App::post('/v1/functions') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_FUNCTION) - ->param('functionId', '', new CustomId(), 'Function ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('functionId', '', new CustomId(), 'Function ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('name', '', new Text(128), 'Function name. Max length: 128 chars.') ->param('execute', [], new Roles(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of strings with execution roles. By default no user is granted with any execute permissions. [learn more about permissions](https://appwrite.io/docs/permissions). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' roles are allowed, each 64 characters long.') ->param('runtime', '', new WhiteList(array_keys(Config::getParam('runtimes')), true), 'Execution runtime.') diff --git a/app/controllers/api/projects.php b/app/controllers/api/projects.php index 5bec6b8247..72b620f105 100644 --- a/app/controllers/api/projects.php +++ b/app/controllers/api/projects.php @@ -56,7 +56,7 @@ App::post('/v1/projects') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_PROJECT) - ->param('projectId', '', new CustomId(), 'Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('projectId', '', new CustomId(), 'Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('name', null, new Text(128), 'Project name. Max length: 128 chars.') ->param('teamId', '', new UID(), 'Team unique ID.') ->param('region', App::getEnv('_APP_REGION', 'default'), new Whitelist(array_keys(array_filter(Config::getParam('regions'), fn($config) => !$config['disabled']))), 'Project Region.', true) diff --git a/app/controllers/api/storage.php b/app/controllers/api/storage.php index 90f9ae255b..2b5df7bc1d 100644 --- a/app/controllers/api/storage.php +++ b/app/controllers/api/storage.php @@ -58,7 +58,7 @@ App::post('/v1/storage/buckets') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_BUCKET) - ->param('bucketId', '', new CustomId(), 'Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('bucketId', '', new CustomId(), 'Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('name', '', new Text(128), 'Bucket name') ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](/docs/permissions).', true) ->param('fileSecurity', false, new Boolean(true), 'Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](/docs/permissions).', true) @@ -347,7 +347,7 @@ App::post('/v1/storage/buckets/:bucketId/files') ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_FILE) ->param('bucketId', '', new UID(), 'Storage bucket unique ID. You can create a new storage bucket using the Storage service [server integration](/docs/server/storage#createBucket).') - ->param('fileId', '', new CustomId(), 'File ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('fileId', '', new CustomId(), 'File ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('file', [], new File(), 'Binary file.', false) ->param('permissions', null, new Permissions(APP_LIMIT_ARRAY_PARAMS_SIZE, [Database::PERMISSION_READ, Database::PERMISSION_UPDATE, Database::PERMISSION_DELETE, Database::PERMISSION_WRITE]), 'An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](/docs/permissions).', true) ->inject('request') diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index 3fdc610ce8..a576dcab87 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -54,7 +54,7 @@ App::post('/v1/teams') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_TEAM) - ->param('teamId', '', new CustomId(), 'Team ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('teamId', '', new CustomId(), 'Team ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('name', null, new Text(128), 'Team name. Max length: 128 chars.') ->param('roles', ['owner'], new ArrayList(new Key(), APP_LIMIT_ARRAY_PARAMS_SIZE), '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). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' roles are allowed, each 32 characters long.', true) ->inject('response') diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 3fdc954ff6..ad229881cd 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -98,7 +98,7 @@ App::post('/v1/users') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', null, new Email(), 'User email.', true) ->param('phone', null, new Phone(), 'Phone number. Format this number with a leading \'+\' and a country code, e.g., +16175551212.', true) ->param('password', null, new Password(), 'Plain text user password. Must be at least 8 chars.', true) @@ -129,7 +129,7 @@ App::post('/v1/users/bcrypt') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('password', '', new Password(), 'User password hashed using Bcrypt.') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) @@ -159,7 +159,7 @@ App::post('/v1/users/md5') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('password', '', new Password(), 'User password hashed using MD5.') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) @@ -189,7 +189,7 @@ App::post('/v1/users/argon2') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('password', '', new Password(), 'User password hashed using Argon2.') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) @@ -219,7 +219,7 @@ App::post('/v1/users/sha') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('password', '', new Password(), 'User password hashed using SHA.') ->param('passwordVersion', '', new WhiteList(['sha1', 'sha224', 'sha256', 'sha384', 'sha512/224', 'sha512/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512']), "Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512/224', 'sha512/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'", true) @@ -256,7 +256,7 @@ App::post('/v1/users/phpass') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('password', '', new Password(), 'User password hashed using PHPass.') ->param('name', '', new Text(128), 'User name. Max length: 128 chars.', true) @@ -286,7 +286,7 @@ App::post('/v1/users/scrypt') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('password', '', new Password(), 'User password hashed using Scrypt.') ->param('passwordSalt', '', new Text(128), 'Optional salt used to hash password.') @@ -329,7 +329,7 @@ App::post('/v1/users/scrypt-modified') ->label('sdk.response.code', Response::STATUS_CODE_CREATED) ->label('sdk.response.type', Response::CONTENT_TYPE_JSON) ->label('sdk.response.model', Response::MODEL_USER) - ->param('userId', '', new CustomId(), 'User ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') + ->param('userId', '', new CustomId(), 'User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.') ->param('email', '', new Email(), 'User email.') ->param('password', '', new Password(), 'User password hashed using Scrypt Modified.') ->param('passwordSalt', '', new Text(128), 'Salt used to hash password.') From efcaa8ba779667856fd12643ef842031c1f3c7c9 Mon Sep 17 00:00:00 2001 From: "Vincent (Wen Yu) Ge" Date: Fri, 20 Jan 2023 17:27:14 -0500 Subject: [PATCH 61/94] update specs --- app/config/specs/open-api3-1.2.x-client.json | 2 +- app/config/specs/open-api3-1.2.x-console.json | 2 +- app/config/specs/open-api3-1.2.x-server.json | 2 +- app/config/specs/swagger2-1.2.x-client.json | 2 +- app/config/specs/swagger2-1.2.x-console.json | 2 +- app/config/specs/swagger2-1.2.x-server.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/config/specs/open-api3-1.2.x-client.json b/app/config/specs/open-api3-1.2.x-client.json index 33af5343bd..ba3a5eae4d 100644 --- a/app/config/specs/open-api3-1.2.x-client.json +++ b/app/config/specs/open-api3-1.2.x-client.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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-1.2.x-console.json b/app/config/specs/open-api3-1.2.x-console.json index fb7794754e..f74086bb5d 100644 --- a/app/config/specs/open-api3-1.2.x-console.json +++ b/app/config/specs/open-api3-1.2.x-console.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 generate a random ID with `ID.unique()`. Valid chars are 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"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 generate a random ID with `ID.unique()`. Valid chars are 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]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"patch":{"summary":"Update Project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":111,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","x-example":1}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/{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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":123,"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":107,"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]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"patch":{"summary":"Update Project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":111,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","x-example":1}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/{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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":123,"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":107,"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]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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-1.2.x-server.json b/app/config/specs/open-api3-1.2.x-server.json index 1d3e14c819..33e0c22a0e 100644 --- a/app/config/specs/open-api3-1.2.x-server.json +++ b/app/config/specs/open-api3-1.2.x-server.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 generate a random ID with `ID.unique()`. Valid chars are 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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-1.2.x-client.json b/app/config/specs/swagger2-1.2.x-client.json index 8dfaa5d5c7..657cf40429 100644 --- a/app/config/specs/swagger2-1.2.x-client.json +++ b/app/config/specs/swagger2-1.2.x-client.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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-1.2.x-console.json b/app/config/specs/swagger2-1.2.x-console.json index e7dbf42bf0..49a30f8c49 100644 --- a/app/config/specs/swagger2-1.2.x-console.json +++ b/app/config/specs/swagger2-1.2.x-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"patch":{"summary":"Update Project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":111,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/{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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":123,"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":107,"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":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"patch":{"summary":"Update Project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":111,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/{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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":123,"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":107,"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":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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-1.2.x-server.json b/app/config/specs/swagger2-1.2.x-server.json index 49ffa3df74..f738402e94 100644 --- a/app/config/specs/swagger2-1.2.x-server.json +++ b/app/config/specs/swagger2-1.2.x-server.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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 From ade2e109947af56a8dc3cdaa36bba41045eae083 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Thu, 26 Jan 2023 14:57:02 +0000 Subject: [PATCH 62/94] Update DBIP Database --- .../dbip/dbip-country-lite-2022-06.mmdb | Bin 8026791 -> 0 bytes .../dbip/dbip-country-lite-2023-01.mmdb | Bin 0 -> 7002339 bytes app/init.php | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 app/assets/dbip/dbip-country-lite-2022-06.mmdb create mode 100644 app/assets/dbip/dbip-country-lite-2023-01.mmdb diff --git a/app/assets/dbip/dbip-country-lite-2022-06.mmdb b/app/assets/dbip/dbip-country-lite-2022-06.mmdb deleted file mode 100644 index 0e8c8dfecf2fe59801f00896edd0111282494f1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8026791 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

XJ zIV~X>n*S4<|4H%|K(aeYi)0Uy3dx=%2axPVvM3@FO14%UYCxvWZ zk`hTdKSPeGk_03*5|5-lcmpK<07ep$G<2%S0QOMLA!M86V3H0=pQK9?lk_rJh9OB@ zm9+p8-T#Y6%R@*GB{^LFVeXtqkZAbNekiu%(e$SwIfmp}l4D73AUTfYLXzW2<O1 z02JB7sE|Kuk>o#afCGcv#s@@$gxNb=#IuF z)Kd5V$=g|0(k$a{s#0nqQBvAmj1@svET7dlox1_&4{jKP4Lw}5R*_!^?tSaBdVB6B) zE)Uvr2l_h;yd(Xc20PNG$bJ^t<#M^zF`vzFL4eZTg*@ zKQHXjPw2;aaPYUaKSKW?$9XXQ!{{GE|IjQlV4!cG0BMl^k@U}@e-!;w>8JXCd>W^J z4EYs(!YZKdGs%) ze?I*Sm38xf|Dp`9!(2lDGG#AyXTE%JF#1>0H?^mKm8@ETJ;Js0P4ns7CqU}Rzrh^K z-pE1I(7%b1*XiHP$jFP5QUfe}w)W!rw{%Uix<#m6hL3|DKG> z5#C4te&^dK0R0E)Ka@u3KRiIvf0X_!^dF=DEPY)H^`8*N^q>AyveN(lsQxSX9R24- z`-1F?vM;4p*_TtRh=zaL{Wbbd{QGY>*jwgU_HFta{>`^5Ao}mgzHb0K$%l+gLH{HA zztR7g{#W!r5#UqV&xHBhZTbcMFEd~9uj!}qZsJe>TSdNe$nWX@Foetw^OGWT(%-@@HgZ4gqFj#KfNwoBtV^HN!A6 z8zZwj|9>e!**VQI@LY_{?XtQ88kv`o(aRrU7GPvSM%HFzAx4%`WMM|!@ISIBBkuBN z#6AHSS%Q%zjX!^)r5RaSRm(84ti^3#y8>clc}ArFBc}g~tYiQqvCjcTR%K*0MOJs1 zH56Zyk+rgjvglcCzp7}-YP%^BH3&X(fbN_LE^ z+M1EELsi?RNP(>dFtR-(I|#p{!{_rqBfBti5+l1Z5-_qGBLzlwXT(&Ukv$mM)A8)Z z$lk8jz5*E8S9U)G*gLVNpop~qMbrWeSz^RK0T`(`OqCJSe@5z#(__TXe8odX4rS#3 zadi$*vm{Hjo^Nd1wr$(CZQFl$vCCCmRb$(4j61e%+k9ib%Bal#`@FTz$`u*0V@G6l zpPgCR=gvKzk<%DC!DOAth}sB*>SRVvF}bHIr(#q3&&U}Db0#Ar(>DJN3781Weq@mGnS;pquaAY-VUDjLbCb^%5bMpCJmwLOSkFmekceMT-~q+~=L_!+5W z)VDxlpUsHUe@4!g>3L$G-|{eWfjBR0M&r4dkxLl4nvqKxxr&j?R7f#j&WPFw#5P-i zo?gRgPYU=c8J}iE z>A%>|%J^I}HXcTl{)^{D8DC=LW$`QVXXI6rrM3V@URPk{f0NEQjJ(CjyNoFPXXG6f z($V)A`H_+L8To>d4;cB3kq;S>UjarwGMG;oQR3h7t5MN@ZlYf@qAvUy`HGRR2N*`a zWkiX;guZ9whhYXreq!V=Mw%>j;AiA#f&J2A82OEnKg9F9@hJT__TO}r)HCuABmXj@ z#J>$SBOUc3prW0zTR)v~>4>U##-pReU!oJxnUKyzI#J=3{tLsT1~Zu;)%l;!6m+I+ z0WzJM?gn(Gp>r;sY3b}sXF56y)0v*mJalHDqePz0jC5vFY^t%D>FC41gl3~N7aiFw zI!6CHbDGj~t6I9Bc@4vS!ZW{&3(%3*fsQ)=o2*6XtVL&0IxEpxOkj)CSw;-C1<+ZN z&QelcAO1}V(f`hJf?1x9(f^Lo|BljsI;+UIs*Fni>B#+$3avqBNdG%))7g^FI&?Oo zBl_P_`Y(y=%eaAz8!D&b*;uBsWpp+b&t@`iE~C2tlv7pTmX6&2 zbhdAibarU*CTnLpyVKc4MOC?7>FhQD(Ah(rdkU4(e>!`cM6(5S_M>Cb*`Lk{bPk|% zguo7@bCBd7EaM?E9xCHuG9KQHhU!R3IZ91ciKFQp(?;nWE1u)%96y9VkEv`AI==9zEr5>E|4xriDxQFj(f>|F zCzjl#t<{cnGQ(NW5zX)PCAXv_;@?r{e}g$&8LHMf#&aH>-|3uB=OH>5(7BDyg>=h2R%~$$I}1hhc0x-Zf)ZkSF?4M{?na+ z?!!yMRO|r8_y@$y7?)e|HM;PuY6tP9@W33z&xP^kPp-ce<8Mt*bkOLdx># z&O~=7vmD*!#ZdZBcSVC=Nt|j6FrHQEu10q) z@vlyI4Z)AY49KcW=78(cP2o?sS#- z50H&bcdyn%cOSZP=I`!nc=p#|1v`-LiF6O5dnDb1=^jS+kd}w;p}L%csV#u+5r*?9 zy2pv7Jm|rGL67(LI^2I`h*#r47+l`cLl5VBhbU$a&J%{euqfYHVkM4zZ&!>CAXh<#XBD(4psBNYh>0V0rO1hWP zz1(yt`rl#{;40(4hVCtNucdnv-RtPy(D2Z`zGb6(ifVTIS9?CANQ?&EZyru&36 z`6OMn3k-Gmj7fRc)P0`rJ9J;5`zqZR>Ap-?-TxSvI{zEwYjkBV=&CJ%?i+O9Y(p}A zTiNpT=)Oz$Q@Zcb{fMsUzrueYun!I9W4fQ{-gMSybiZgkbk!Ch;4d{mIlrd+58ZF* z{!aH>x<3lwJG$R1LdCE2UyPsVs?$E*cB-}j6;hsG>HgN@W%@@OqWdS^zgj=tzZF;! z{)^RU?|)bmVU2|~j&fS4M9ZB2t#PqL_O0iOIo7ED z8;qR)+vi|StmHY_FhSh59JbF}?n z&4o1&*3kLinzyYbU=e?7Nc^pZuxzY_vG&JW1Z#b)MX^@JS`2F`>2PtZC9sxk`AwCj zu~xuZ25UK?UDkA^^xt4s#8R4%wNe`udliFR4Qnl|)y27njB7Td`lA;p`fsg+wJw$t z|Dn(ZSesyNC|Mh|Sy&r4|D$a2Y>Krr)@E4SVr`DqI=8@58-xJ1QiiUwjWM>v+7WAe ztQ~Z%7NeflE$O_|ve?#FE3mb%y3?PC=H^f2@v-T^X$b8q4vq>l~~UtB;jo6~5@d;03tQFtvChIeTLW~@=L+CFtn&xCSQi-lMOas2 zT`ZVOur9;8bO?4i))jiHKclO#t`V?0|BG=gmK^)7>jsI^+l^Sa3g9Lz`5vlAbhCJF zQONcmKw4@G5d0n3A7R~z-F#Kwj2}Vcm;$Kh}LJMQ1&L^)S|h zSPzZ4>PN6f#lHb#J&yG())QDyNjZJ~$9fv;nK5&p6TtJ@slE&^V!eg+64vWjFJrwb z0NDZ*^J{H0ZC6-tV7;kw_49cf>jSKJu-?OZcTA+&0;~_QKF0cJsN&H1-}(&ePpr?e ze#H6$>uW5f|5#rQ*s#9A`X1|BtnUUSg85;nlb^7D!IJNfT9np*tY5Ky7qDyriusSB ztiQ0w#`+tp5&VBzKi0o(Y3#Aua@cYO)a2UZU{8oWF827?TKpRf_5`Ed+7n?>049!k!j;YEx?(ouz1}!=8R9cSh{luxG-a1$*XUa_m{# zDfaBxb2c`%)_<|*GUW4MFN!@c_5#@RHBRjLhxix7UKo3!7A(<4hN6pMFNM80_LA76 zhksLdX>6tW*vshj_B(7ZkG(1O3fOC7uZX=m_Da~RNLMSjNbFUy)#Xo1B_TQg+iPO4 zrJe2f&0Yt4BkXmt*B6*v0jZ)JU~f2FSE3usxQVH<8TNMAn`3Wc=2c0xh7HMee4UdOYC#7E9|qd)ke?)u+JW{&&9p~`#kJX z{U74F2>Vj(i?J`!PTk>U*jHf7D}eS~Ih1uZ_5;}0VBgd@v9HBe;*TvGfqet^je`aR z&|v_-2U>|_5uz+fBwcg9kMn#DRs|DADgCdL^TX9Aq@aMW9XPHae= z32`PGOeIma0L3tAi^Q26M@cu%6gX4jOoKC(Os8%EVo!@R1I~0f(`#qDQfEe-nFf6} z2F@%vb4kjqIJ4m>&BvL&&B9Ty1IC^kX91jfaOT6Aci!<1C0Xr2oz$IGf=t zinA)tVmQm;ERM63WGx}%k}Va^(m103&N8jX_?O3#+a6~H>1{>Rj}m_zefSr9HJo*E zR>zTZzOx3-nm9)Pb$ja!$Z^)g*$`)a$sPUoKR6rVD9y)F`Y*<&%Fy=aIJ@C&fwL`+ zh`&N^g|juzHUshojI$li&N$oS=<`3$jyOBDJQ}HByWs3P#J@YvJ~-+M2xm{6y>a$Z z;NfqevoFp8ICA(`4Evkj4#YVa=b$0BLvZ9>z&UidF3u4+_v0Lia}Lf?I3CW?IH%zp zgL5Lzu{g&!c%0)5vz-6+x9B9CQ*cfms-iA}4DxgwIpjNM;GBsw()ybbM{NPJE(^yI z!!{mw2p94;Uli{R8SvgLjr@GHlN>n&!;nZ!S8r6e6yPe{k zi*qy1c{o?&oR4z_&ILFZ3Fbo6+r>DS<6L5>F@y!nsj-bf02q`xczraMY`TiQbNLS2M-A1Lw}x*^D@Mf$oyo&Pz zj*@+x7n@ONU&eVwGmP@QhVwd()_;S13+H{Dw{hOXc?W0c@ZTot#y-IL5a**d%jAB7 z^DEA$IN#%ZhVu>1=Qv+V178@-S2$nmtkF)s#WCWq+WrBj8Gn>SrT>E}I6ve3qCC2d z-*EoH`5oua27~j*fEnj691(ww{1(}?j*SL;!cV?Bkp9l)8I~yI~DE}xKrwe2VWJ}yaKq>;?96O9j+Yy z<*H>SyMc1*PBy~T%5OZI;%X3mB01l9*BDgZu50Ico^Aqg{$=+SDpWHk5H{D z<49$w>PO=qk9&+bkCpK_71GfYOo)?90@(Q49`MB!vKa?2a#<=Q&XvitA0IEcWdp2&4TQ*VLqJiP|TO@9U zdlv4H{_9Wq9NY_W&&54o@aJh}m8*XRz`aNaFV-PNektz9xR>ERihDWkUAR}^-iUi8 z?zOmA;a)w&b4}YY?sd2~2$gyT7_0*KCfqx4n~JyM-i&+8AXmV*;oh#ny5}MNckjl% zPddK`SGEAv`Msv%{kZDR2loLPA8h?%KP=-Ttq1op+*ffQ$9)?23DtmF=94n2yC5;1 z!F>VuS={Fopm8c@{T6`xBCbCChSPu#x+@Ruf3fPY#r?tgen_VMHu zKpA6?@^~Wt4c=2%KzQS~40sdbO^Y`X-X!9m*!U;Kn+k6-yeU*gZ*t?8Enx7(JoO5I zH;wMWn+|VQyy@{~!ka+|XKWMIsOruvqtSnFHkry6pm@}~fOzJ@dkSxEyp!?f!P^XP zUc6QC=EGYYZ+^Um@fMKM3*s65*SU+}E!vPMD#f{&;amc5IlLwDmcd&JZ|T-=qIwIE zl;!bO!dn4PE5Amn{?#jhU{=Lj2X8ezx%Tl^H~uy8MEv!7*Earj@ixL+4{rlJbrIBZ z;+ZQTMZPiKCdM!4e_d;HynXSuz}p3HOT6vyw!+&++SuCQw^fFI0^8&5DA65E^_}o` zZleaXE8bpsyW#DDw|fg~M!Y=-woLcN+h^dx+Yj$(y#4VG#XA7+V7vqIdJFNr<81TVl-Cx5)K?GrC<4Z*1MKVGIh zx}O5?e7rthEg{(vyvjt+!aGO&=KSxSi+5fdHJA(VF2lPJ@8ZUTr?vnwF2NhU{1?yV zcvsD^Pb)UMEKk-JDzX{>}gFiLizxd-z z5C7qhg+C5H_+t;&sF41+_~Q*~DX>2Q{-pR5;w#O^pJ))pS9^hACc~dXqDKGyDe)Pm4bT{&Xr)v5npW;m;@@eG7y?3;yilk#_-qwgDUd9QbqM&!tG(k3jV~ z5B{3?^Wra!KOg?0`19j0gs=2pcorN2FD#x#OlUEgE{?w>{t~0Ks>7uWW*Phy1h%Y< z%gMOBiLQvhYGdQCgugPr`W0ZngTEU78u+U#=NSIA@OQyq8-H{Bb?`UBUl)IU{PhMf z{0;C&#lP|6Z;Zbw{w9iFKmW~!>@D!O!`~8r8~m;Cwek-&v#rV69)BnN9q`pIFa%JC z|JH-QEB>DNyEPtsrT_Tq{>Mc3!ru>nZ+tEO`1Z~KSPkG52E-+|NRcWg)dux?oj;@V5+$I3BHFP;`{hL9a0}eFl5VK;Oi{_KgI9k zXHqoBF9w8$w#2V=Gm7dg{AM9%<6n+{4*o^>=i;A_Zw~(oa{<1-`DxkkFUG%AN|-Ak zU+#bO^SJ{5TKp^VuNKTzLuHkBE0Br8gnHt?5lfZ%KL+)0>svB=n}DHz~a-=uOsA(VN^D z<_bvVPEBtHdehKTvQKZ?p&qpU)0>f=ocVh*83sB0x1UIFHhK%wo1Nag^yZ*9H@!LO z&DA0eexAXU-hA}r*x#GqL>HvD&;TH9EJANFdW()a)!G-Qx5U6hZz+1~&|8|`D)g42 zr_`R_vh+spf9S11Z^d>+^j4y`@*rKRtV(YUdaH>ohkw1IHR%nV|9fkiD_ z=xt1IeR>M*l8sEQP3Y;vKRwa^_PgENLSS3UxRnCyirdiJpWe3g_Mo>NyUn`^a{}1liptPK=!7$FTK$#AbR@^9s<1s=p9S%KzfJL z)2{&Znl0dvA76Fs zo+9I^#;?Sm-Wl|?@;6ffbO@U7aF^cG^elSU)3fQFL(id?(R1l3ou}u~^Xc{4EW;Vn zQ<_gt>Ax5Wy|j%QPfo9-CtH9*_Km-ycNV=`fu(avH|PJ}x%94}cOJcq>77sSLWy3W ztE+`vWOy#2cbP=ZTY#!^dCN)fN_yAOyGj6RBWV3Hy;jES49^Yp?xA<1IB%kNYvZTa zP~A-L7M-QncpJSt>D^B6jxqgr(YsrBs6UJU(R-BMz4YX^r+1%_n^%C|gY+Jz_mE1_ z%tPn@-edGc@OzKbdqNc&eM(QYHoa%){YdXwdhgSFj^69^o~QQ`y%(g=i$f_d(|c7` z^va+^daoItH|V`h?@fAd>8S4K9eP^)>Ak1GdR-sT`<&i~^gf|y^uK5HzxQbaqxV@0 z7W)f&-_iS$-q+HDx(gEjH}t+8^kbag3+4wi{fXY60&YHzpXvQ7wz>im<2M<9r#GhZ z_x>ViRQ+#y|IzzLF#k4Vo290~STfQ&3C1Cqh+tfT2?)j`Fyh}<2_{sD+MbwTGJ;76 zCe>`(Kly;4U`m2r38o@giePGj`3a^Wn1x_kf*A>9BM7D^m_es#26gx+P#Zz(CzzFB zE`r$z<{+4TsE0XqqQcKjFs~%)Er4LYq38kxixMnIu#k2(-|9fl|A9IG2Xg)o78jBw z2$mdkT}u;eOt1{Wngq)dtVFOJ!3qRwJ7_rx^cEltD-*0nunK{CBhW=vpQ{tBp{IJi z&42%ST}fG+V4VS&U_F8j3DzgrVBi$kMuREACIs6PY)Y^-!Da+o5^PSeg$A_W(qOBh z>f1CSf^7-58#u+YgD~$%urqpbr148NJd2^;D%COmGCjAq0mB!=XbVrT^kQl0Y5%365$#%}8*Ji5^FA z5`pNy!kj=L;;&bIGQnvC>fiqmi1=&&=|Xr0!I^`Kf@$=>PtYY$+D>2**aRMdLm-#` zqpR>$qGk&SGJ=pGA&3a#wl_VhuF@epCnyF*2}*(s2`U1m_5`(zXSH~Oa|q5SIG5l& zog&Yqi4ti2Cs5)~a4~^C`J3F!$e$y)oa7mTD~KABD+wFeRfNr7x2p+0Ah?F0iC#-^ zH^FrTw-H=Va5KRT1UC`fsHjFO4lBkj(x-X_km|R~^bUf%2=3IaN=W?o5IjooKLSzy z;9i3J2(ZXYC2$9@9Y0yM4O0tg->P_j?(cuP+3B!N2l6FfEOPyo*oyhqS1{3VG# zPoVT)LNA(HFB7~;@Ct#_e1caMKvBI;@J4GJ&szji`RA^4E65zLPW zej@mo;PVDU@QIAF1q6BvAozmd8-gzhjPeI+BQRCIB~WL6g71vy2ZA5lipJBl`VYa+ z1b-6zLhw7muLQrfQH@j#qq_jXUj*uh0K@QaV-WmDI5y!}gj)G^G#sZj6eb*xaAGm! zz9^hP>E=#zSnJz84%d`N(Y3( z*nV5W)d{yCT!U~OL9Qv|S~9NPA_>b?AJ1geE{K*{)Yz>it>kt2>#HPobYhMBTU^RhtiKGJf83v zp*mK^<5YC?!#aUb=|AB~13%#@gc0GXgd-A?H-hkV!ZQes{_C}O2wlQ1p)E*Dk?4?P z4397%^a*=9ssUjOXhy=A@GQcFFqdgcm<>@Cgr)e+`9G`(mGTcUoK1KE;W>oo5uQ65 zQcF8u!<2m?;YBJcxrCPxHGd5+C47MJvc^exIpM8@R}kJn*y#T?gjcnA!mC>z!fOey z7qCA68#X!rhc^-4OenqSmENKfwS61m{|IjM-AsN+w!n?(DPfMsq)zZB(-bW}~ zfbRT3!cPewB7BMPVM0;+@DV{iO86MznRpKmJ) z?8O0q@MXex2wx$5lkinSx&H}YYXO8qKLMyhZ%GetD=Ia8m+&LP_Xs~A9MyjbeP|dy zmXuG1s((iK7vblG4Z|0N-xGdG_zmG#gd+YzE?M6ae%IDAY(EhG*m?-f<&S!dKNJ2z z_zU50guk|6Y2)`H`_G{s{w5la@E@YF3I8P;OUnJHt3+lCXqY3V|3u@C@dr_svl!|XK#W<4X4M#7Wp<*u8V`}$1&HQsMw!lSQuHoBG#}9tMDr6ZM6`fll=vI` z!bFP_Ei&X;jA-#TYA{O@El0Ez(K19z{97>5vP1UrL@PE^q7_VZC8CvE+jv$b+LUND zqIHQ@Ct8bW4OK$*uk_#8>i&ml9W_;i>k(~8w7xiH3()?Jh&DDD(SQA{HY3`KXmg^` z^FPs+riZPGwjP4XS zG$WDP0tA0N(Md!nnCXdwT%wZ&sa^rZIE|=BbUKkubcW=fNz^48A?oNXjkE?+A|?Jr zE|J$diTt5xKvWThL>W;;ln6LB$h7TBs^>&~F^bknR4PMOAz8JIXAzxEbWY1)c+Mk! zkm!8k=1Y44(U(LQ5*AENh%s6Hh6l;|TO zCHq7lx5ySiqz?Z?pA&tdQ#8+4#N!ZsP4qL-H$*=WeJe=W0#wTP10JFuiA4XEUwxUI z5YaD0{}KI4^cT@@M1K(du1hGG=)bP@H<7yhk*qQAf8w!-mHrcttpF`19+!AJ;_-+l zCmx?z9r%gW7C=0q!Awj%sdy%7`y`%Bg*3wy#8XRjO5&+nrwL6X{%Os0dg3{VXCR)1 zct+xxiS^~bqHX(+XCSj1mF%r!?D)Ks1SiPd|75UwZF^<~_EctZ`=(T$0>C*Fj33ju6OyqOrA zH>3KaAKjM3TM=(dyfv|izljpd6_94zfp{@wF%SQ$&pn9u z94fRo@d3p95UVpk@xG=3(SO~{fy4((^dQ50h%$5!hY_Dmd^oX1d<5~y#77bzLwr<= zA(kybeSF6fpFn&Z@$qf0sdXZ;9RAJcLVODG2=S@JrxUBgzo~Tw@tMQ9vR<_d5O)p6 zCeDc+;(*vCREJq2;yc!>MNC2=)oRA2rG=Q+eT z5uZzZ1@U>r7ZW%7e<874{){g0qLzX965`8#Z# zGCs*vBomNKPBJ0MBqS3FOr8H*q)cTmNMs98xl;(kl&XPt70J{jbC66!G9$^fB-2aQ zbVCd?v^L31B(svtOfpNGYy7j3%s#*i|C}WAk<3Lh56RprB%Mo0wg9!9`AxcP0m`!w z$qFP3lPp8B2+5Kpi;}35KgnVStn|OFPO_AQmLBpf+t?(_$+-NGe?^k@NLC_Qon&Pa zb@M~AN(&%aO%dv+u?ET7Bx{naHAt5#>yWHF>=EbsBpZ-yOtK-#MlFNk*@R@%VLZv^ zBtFR&BuA5MNwPP|RwTQSY)!Hq$ubdP@Jo}IwPO>k_0pj0}Wd8vb$$=yXlN{7$H7O*AkQ^q)p&B;&*pDDNQbI?y zL(NE{E`r+9 zBsIyoBxi~LY?5;{Ot*BNnyM6i|3h*i$z|eE`cHB($t5I1;;-?SlUzY^m0;u*K!09W zH=d?6$+aZ6lUyf&>q%}Qxq+l1ypiN4{a6Gk;G0diY9o-8+YHYgBoC3?NpdgAT_hs= z$=wDo`mfh=ABj?a68#oH@?gs*&PM;AAbEu3G2wr-Wf0q(|C1+4h7SM9)27O^WX(7H zInuXCo+oX-doPeqPx2zk_arZod_wXv$$KQPki1FqDv8|xBy#_=ORIje1*rBKl6Oen zZWq{gNb;_!^*+f*Bp(?6hb@f69R3xF?iDPNhc$nfK+5ZHTOU1#H9MC~j6|LK&ZQw>*X zY|?2+rzM?E_t18j&Oo{v>5Qa{ka()CE!B3(x?Yd2#ieIePBtaoOroRbf6^^UcO~75bO+L{Nw*{2hEyy6Q114o?vA8N z`AK&gimG=3Vcv~&Pce2U-J?yB>0YG!h_QF;B-Mw1q1vDHLec|B&mcXJ^hnZ!NDmkM z!K866}lQbe7A(cD-v?D29Y1=XwhqOoPO2{KsZvic#cmf&2Ax}(NktU=CX)4i-G}nO9 zZ%&_7^uOtCm$6A}((_5rB0ZP%Y|=6HKNbBS&6QUGwf2ih?;yRH^cvDjq}HXRSCL*u zdWB5Q`9Hlqx`MS5T3A-$XQ9@2YBNA=$z?ebUcKKOp^t^h45*G+yO?+)|N#Dpa2hsAT#D>6a})reBkO zPx_76M*q|AhS+|P(2s2j>Hj60g!E^!u}FU*{gd=p(mzOlBmI52P-~O^MfxvkqyPW> ze^Ju^G-n3cgk)orjYl>P*|>x1jX^d(*#u*HWFyGr{NFz9Y*Mo6$R;D3l5BFxnxZ9F z&1X}QP2Dn(O+z-VX4ARTlg&gXhkpg0aZrnFX0lm^cxEG8g=}`RrO4(Wn~!WxsWlhb zJW^=xA+XW^Y<{vu$QB@5NWcqfj9S{lZ7s4z$(A5nj7+@+D1dzTnvrbDfro5qvSr9t z5dX4d%aJXwqk1hXlC4apE`P@KuS&Kl*=l5>^V#ZTYmljvKiQfCFxlFzO|~xCMr7-e zZP4(Lt*13zMRP^6`zGP>J^Gs8vLl%&A$sF-3{U=lVf*3BDQhqXX|C9ApqW;`NvV<%mi(8M$ z8an@HIob7O1=(d}eX{e&O0u)as+NbWHd$v&1Lu&P+j@-ue6owkE|BPj%Bg$1xM3i> zgzVDRWBivl2H6#4*N|N)_EltB`E{Qv@mdL8*LuiqAiI<7MzUMPe-oJ$QdDX$kXpBr ziTEq$?aHZ)J2a=V?-I}5WcP?Ms{ds7kvD%A?kAs^>;bZ`$Q~qnmFyw1=g1x=dy?!C zvd73CZJDLw<77(thdfV_Ddi`7S~->RY-=`A+ooWp_v=~f1m7KviDjZ097KNgnTLT zNy%p=pNxEZ^2y1kA)kVLDgjJskW;rtGm=lMY-LQ>_AmAf;lTE^`Crc@-@kqAzzhzS@M<0mm`*rWSBHO@-bSuZ{>F1B`Mun(u1(f|7g{>C7Gko*zy zhsYluvy(^3pCo@wFprZzp`-e#K1Kd4`P1a1=YLJBIG?9#KBE`tZ%h6nMFV?@Vs-MD zDH_Roh5QThSIIvie~tVj^4H1VA%BBhpZv++B7b|#itm!YFKf}e0Qm>xM*nqJACIP} zXa1?+KO_HK^`@WOm*l^Ze?{K(`8By{ey&~tWToGc|49Blx!MtwQ~bj7(~$i$xe@>T zSHt`}#n|M3kT>%FC;8vxe+{MlL;mkDC&gHbwlG_Ovd5tqPn`M|h+=$-2~}go1T7WC zL=@)m->#^blwt{r$tdQen4Drd3U&Ucn37^@imBQ}@k~P@;y-vA#q<=jP|QFvGsTP) zTKRRKntxV`*(qjIJnhp^{mh|PUCc$X2*unK3sTHOF+at;6!Q(QR7x*k@bV&1X#H1C z#kQ!7i^;fnTZLjtij^pqqF9b%X(3rgh1AlPZ82gmPoXvfv1JR;ZOax=tRntZWn4|c zRJk=MIuvVC98R$o#f}tfQ*24G4#h?k>r!k$u^xq1{w75ws=6DtHpRvin^9~+v1!X` zm^Y``Vt|)gTTyH$#?}Ps7xD51=@3kkuFz2U8p>#vubgg*yL>^9YJ#8=FGj3yPyC zj+W^$EkNw!C{Cw1p5i2#o$Qz-qXIFn*T`DH~EU5cwI zEQ*}Mrtm3b3s9Z76y6Yjk0NTO6ahsz;f#OEZW;iMIQ#SJY ziWd}#a=u9Mk{BOPo)a=r!=0a=})7J>bld>pPl~n^k8~x*b%sLg(O+Lpb=HRTHxtZ8^fwk`6B%U-(3s7| zvxSUX(%+i?R*kLxs1n-@+1pW`Mt^(y-_zfL{zde6q<;qeo#-DI6z{ywJGe)QFupZ@;zhwgv+2hl&2{=xJ|5C83>qpw~8B;^SD zC(=KX{xMSbDEddMkd7Wp|9JZ9{=fAIM*j*x|0Mcy;nP1^sEq#iPm}5CDoa0&GwH|l zN9fxU>IhGlzPkKrndv+91Nts~pZ=)+3%+M~wEokNOjbhwEcz+^LXeq^>VFX+MxTB~ zfAst>&bk>J0R6M+pHKfB`sc}1>%WO!phy(#LS?AOdoled>0d(s7W$XczmEQ8^sl6E z#J{ih0!g`w{x$T~>p<&~^lJ^z^@6#9{!QZ7y8!*Bg#P8X&7yxR{d?)(M*nX5x6{9i z{vGs{_$z?a8rbyj5jJ!F@83uN5&HMje~A7A^dB6?)0Ztkcl#*)$LXu{zs9J=>bC&; zPtpIF{?qhdqyG&37wJDs|9PqPT#Ki#^<}C&~%wHx2wp|7ZGt(*K42Z^H9y%R~Qn`bPY9|9{c{hyLFR zFj`B$1yGJfsm}S7P>xMG&H$s@D9585UwhQlod3&-C?}_!SQ00poK$yPPNu+Z-Es=b zsVS#yJ(N?m7)hCia@rx}^puNJ&OkX2<&2cGQ_e&=3#GaUGR(75YUMYcIVk6%oU<)w zs;C{I0Z`6Mxgh0ylt=%M2u12{Jrt*nxsCwVHr2k;H(CVB+rQItmx3Q1J90M-1llk>Ped(=e0hA?WH2^m-%Cjghq&%DQJj!zfd~Ta=NY1BJ_djNOk+Rj= zFP8BV?aY*HB(bc~zT8Df-_&5S4o^<#jEONxy;e#>S>p8-a1&OnDdO zEtKlchw@gbc$?w8L!7b&j6Q1h7C?Cqr51llxsUQ|%KIr_p?rYyDar>aAEkVVQhxlE zijYRK@2^^aaWnjr|hk%dOoaDPN`hkn%Ok zw<%wze3SAG4NxR+4cYHdzSm4C-))_g?^7E6*A0I}`6=bc(%vV!8P)1%lwXMRb5r+A z%C9uJ&i#h+XUcCWf2366PpJ<7l;#RZd44kKgKyL?lz&qGN~v}M)7bBlsCNO%zo;6K z|C{nZ%6}-e^6TpDH?x9j>;Z$SUX4q&J=J(ri&2eFH6zsoR8vq*NHwtl^eX_>BveZF zsU{sTP?@)YYD%i0!oQs9M2o*5SE5>-YGtZbWx9&NtkxQmxCYf)RBI}aSr?T$|4VdT zs!gcYquM~G`WA?4L#mC1b0eLl@taa@MYS1~9Q!Nv3eWez(|Q5 zsE(rAk?LToov8Mu+L>xMDkc6@yAHrqyHo8&wFlLnWA?B&l|K2KD*H+9{!|B2iT>*+ zuQr92kV;+wREa~W4x>6kQVwsUV(Tq{>S(G{sg9vKf$CTVP+7;xC|iIgKaonVgQ}CM zjPmQyX;cnXqyHna+m2DwOY?{2D>KdwRTMX58DypBu4MKIJ3h4zl z%y(1WOm#ceEfN*+uSEPc=8hImbtlzbL%H`*Jw)|Cst2gajmX^)=PgRPRtdL-jJ%vs5oqJtwf{{{Mw`MJ-;OFPYp| zsNN9It5mO1y{<9sXR4~aN%a=h+rxgUcd0(6dQTGHr}~iU0|k(N#Q9NcQ+-19CDo@? zO7p4Y6+rd;#o#&167()W^$j&t-%|ZT^&QoZRHFaY4~kH)_a~~KsfILA`+ucsME*Cb zKd64!OO{WQ>d$sc^*7bORR0X3RR2+rHJGX<>#?aPr5=ZRLh5m;$8Vz4sVC9Vwv$>mf?A0`^%RO+8BRG7O$)9>w)r30Q3b zgWd$T81>@HsTr1}UW-o>TQK{E9$Kc!0ZC`cGNpkZ!c6kXc9%c6ZJ0CI}dq8|MfH3o%$f^J*fAi-jjMC z>b)r>cglHF`+|^p~Rp12x_hT#(y;RnbgNnpF({s zwL0xnA4h$>0_Z1vBK67CO8;ArsU<%I)TdFOKJZhYVWK0{5p{>!rS4KY)E2d^N!rgy z^Lx}iY7u|!38+KOsXdMUXVgiPPMr=y)H!vZx)^v`gSz6Z<_la?ze#--_1)BGQ(sGc z4)vwf=TcuteIB)lzgqI>`Cm$0M13*!CAwSvY%im}iu!WuD_TGGmCDf3tDDl)*9>{C zqrQn+?tkhVB&yE;ro(0-w^85R;Hht+*1!K6w%e)iq!#_xPvEXLQF!j5ewO-w)DKhN zOZ|X2)fPZ~zu_1CSDuHA=Mm~BsUM|&g8DJ)$6J3}(O{mUeunyK?Hpa*bJVX>KTrJ< z^$Swy#Q}!;W$IU{Ur{8|tpHvdvemxOOsU_Z{+s%3>aVEZq5g#WUFr|1-=ltii133p zms*KGwL1SB&!^(~jQR`e&vgmK{N)hlYwE`H4fPMy-wOUa>hA|&g;caZQvWn?QvXc- zJM}Nrzfu1>U^8|9p#FC{z(3ygc8vf}_MrU%(GdP6Klwz97a85&K z20GJc&cbx&lPL4kSx|%pTD-`*{?l26&eC+$_p8SWAbk-GeX#pyw z^^MntbatS#5uL5+Y)ofUf$1(lXEQom(%GDjp8Q)c!RQts@-}p~rL$dYrL(;f^e%R! zvk#q}=f~ z6Y&r_=g>Kn&e3$F{&xzOR(m9*XS&gid*HO-;b3L8&=v+bPd^(rVxqyz${~c)oiu2-j zcf!-m|Ceb7wO`c&nkAhp>0BeiRdlW%!e46u<}IMpp%c-u=(u!jI_C06^LTUuI{t8; zbmR(1Md{K>>BMx@wLhIi!$wadqoZCEOwa=BRXQbB^A)Y={70vz^D>D*4|9y)i>xvK%t(Jg?^-2)do_bOjyy{}c$d4SGS zbRMMhi0B`pGjs*id6do*bRMH)>i_6oo>Ww7n@`huj?OdU{%orh`FT1oieTOX6!@hU zK<5=YU(so{{~n#!=)6fsy#mmY;;)(CqVtX@N8bYInERj3`*c2`^8p=Vv^Bo;E{Al;vA~)HYiz9XvBps$ta0Tzo^mmn zU`>EEA=X4%)10R@aVuj@iZu<^WLQ&TsTP1W#lTUPQ>o2bQ|rB0(_+ntCH3E$9&3hC zu!5=jk2N#aEcy^62dvq!7R8z!OAYy0bI5Z}tp8!nH70T%tc9@V#hPE@&S&B-fVJS5 zNc|H4mc9kTS`2G>ti`dG##%x`EQvLG^KYn@!CDq;InCC7M%D^~mlpwRrAAhNYDcSJ zU5T|S*1lM)VQqo6I@bDFYhbN|wIA(9Z~D|#xldd*6fFM64w4$M`9g-bqLmhSf=t@GXHDjp;(7EY*?xVNKk13 zT0RQvSgfO!NnwsLnH-08yuqJ!i3hM@}tFZ#CYp@)wYq2_F zx(@4lg_NC&#==tf|2l+9!xg=H3&7GX04v053V4K-VRf+*tXR3|E%dO`0Yf8TsrrwV zV-=cQBP-F@N~r+q6+na=u^zx`H1}ZLgmpXC%~{%UyH{w^S|{V)>BvyVLgiVu(3X3a(E2u3Gsbgnba&JlxOIm;e|BUqq)-PDUVg1??N}$pEAFMyI{>J)i$oh|_QVjoLPl-Ji_9WO~Pk=o( z_PE&NC`|k5+v8!6KX7l9*b`z;j4iJK?I){|GXL9?sT}Odu}$&U)~T>(!k!v?dI3y> zJuUWhI+=E-_6)*5qgJX|Gh@$*Jqz~i*t25KHZTc^TmfnR|EVNZ=(&`jeCNSlAA4Tx zRj}v7UK)FT>_xB_z+MR3v;c*a`mcEw#a;q?G3>=#o;D)(lGsaWjpknldqwPJv6sgl zvjy0y1xOC6{$tA(kk+hELtK#4IVw?JJhuAT8gxwwH6ii~k zX(M1~*g1B;Rf@*60A;PPpT(}R@5Ua%zF7b_$n!?*25{3bKlUxycZl^??Ax$!Z)6Qn z>B;b~gu7Zj_C45-Vc&}__doW1*!L@w-p+&A4`V+x#PA6Aqhm&V9Q$ePC$OdXHwUHo zpK3AK&kPd4eh&K+?B}tYlKuj=D)rbeV!wp_@-V09U&WToAN`$t1N%MfH?iNrehd5U zG4Lv)?gH5FW2>1T+uZ-yA7OtyNJC7YVti!>Rw$=q_ z4xG7g=ERZWFW(0Ns8<7nnHOgPQO+k%^)4X7f;fxdEQGUgi_|%2>tZ;~$t;euG>)48 z#brsH(H4NS49-e8&C#uZvmDOy{~sQl6-}&_aaO}w1!vXaD2y1}f8vmwq}II8U9 ztlhHVtc#jV5*%Im4d(KJFV2-XS2s(Xs|?jOII1JGU@=`U%pDvXM;Cw5I0~kBKcn2W&Vu;oO6B zGtTWew@A*n;@qZv^~v0Uqb7fxJBJ+g6%fw7I1l68ha+9UG4sFkAkJvtI5;rxuFzOKgWmsV(=IKSciiSs+o9|L8B z#Q6*7Z|$OE{VVwYaKRmG6x@)wW4BA(ad9WZ9S?Ux1$Nb20PY0FIuY(9xT^k-CgV=p z%D9u`PJ=rI?$o$b;!ZUj-C(B0)x{rIy%ZSzjJWgQ&V)NB?##HV+T*HQAlz9EW_D4k z%b(T}SG53KHT>fa)qi(h+{JL`!(9+}egjq=K?oPZT?AKJfY#{$_*1Nl<1UH2L>p8z zOW`ivE^(I`(l3X5H}3MdN8+x4yFKoTxSQavgu4#z%D8Ldu7az^eq7xJa978b;a}>H zN=aGQ!qvrJmh0lKFT#2XpblXJ+>J!DVXG14#wM#xakm!hX1JTI#tC#)B@aX z#CKc4Y-bpDz}*jbN8G(|cf#ErcW2yPan0qwWQ)7oQ1m@;_f$)r;od^1u7Gg&ZI$Y& zmiyx#fO|0RffD*46;!^=xQE~#CdxyN=5X92TG?oh!o3dnXx#H~kHI|y_gLJMaF4@1 z0aw+3gFLZ~*er2R#yt)96kJvOhcKrPmbj|;R?rpeo`J*tmw)?`p9rrHWJ8(xUzcOjBd+^4=y%+aA-1~5!$Gso-aoh)RAC_1T z%JU%;@ex@*iu+irG5RNPpTT_+_bH=!x((4hai2BH=STYOwf-FM%90#{2cci z+%IsyYLvKN4w=3-_-}E)Z}7Ng{&#;+CLQr7+<$Nz>mRs3PT>Tb+`x~yg{L%P7 zan0qA;?!LL_g}oRaQ|y*TYfwgn>V)3)*BaZZoKjErobB?Z(=-E{P9#f5MiPgDe@$E zlj6y>zc-oIx1YN=CEm<PG!P^&aUA!Ie*2CKzZ+*Ot@ixGd`tOa_|CR@D6TD6FHXAdOE%3I(+Y)aZ zyshxI)>ge=Rs7YTUT)vYcst_lg|`#lu6R2utNPURTL9i}czfXO-s+9Zo<@-R@2UE4 zX!pZA6>opMqwo&EI~4Cgyn`D6-a$jKLkz=Vct?m;u7FhNBb7-A@s7qj5wAI}o7*pWEu2C*Jw;RQLaQ z7aF#U@fy=5csAapcvs_HCa}x#uEe`y;4Vrt|9jU6$+dVLyzB7P@UIBlxGI*_YVaJq z9-fOA;CXny#t0HG#On%kWbiRwGA1U)EAcYC0sUh(@hZF<@M^q~|Bn^##+D85 zCcLNcZpOPG?-snf@ovSt1MfDx+qIX@>Q1~d?*H+c`hOqZy`$v%(|iE$al8ld9>IGE z@8Q7-Gy>kEc#jQh8h5-W@SYs-;607^Jf6D$!Bh1gPY?ehzksKzJ>HA*G_L?k^9tUp zjneGyb^Jx~-oX0@?@he#@ZQ4v4DW5c5Afc>dk=54{tKIa3&8sj?-RU_@O0%L=uSUF8&1g1GODEcMvm&9KVe<}QB@RwFzl3RnvUv@}VT>yUt!?P0p+W0HuuYtb`zRdr= zv;dukv;ZwPEnuzIQApOo-w1zQ{0;Ee!(U&U+PEs)4Na7d@i&z`H!&J%0h)FT{5|ov z#NSphTj6i55>^aq{ug08{GIW)$KO$wI}Bps?_@B$;O~aNt6FNW-SPKORHK@`@DIk{ z8-IWNeHuOfzWDo%i8%mY4gV5I=6_+pKLr0s{6p~%7sta|FMQPqTD-U%g@5!wgMTdk zU--x2-;RGgeh2>q{EP8V#6KJVB>dCxPsUeWK-^DNzB=OR_-EqF{f`NOf0nVHgMS{r z6n~9BAOAx93tB+)#J^}rz64*@cKl26FT+=5A78G3wELAqySN(v8vN_7 z7Jd)k#t-q;@Q?4}`}p1vM$P}~Pj4;4mqy^n_+!?8KgGWhKf^EZ`wbpHS6-0 z@atA%^l}BHF--!u;NR4G;ood9x3)Rp>suiFJMiDczY|}TX#BhI@5X-!{~rAN@$bdI zZ;*3Cg8u;igIc3wJ&gYt{v-Hf-v9fL<3G{HZSnX|;j2=Q|1`eTe_zl4qI@1-rhWef z3G|}L`DOgq@L$1yRkP{1uj8BfUu)jN{|^6c{7>=U!T%8dUHtd)-%| zKEXr;6A(-|Q0j0^!oeg2QxZ%{FnOaSm~4;g4qbhod1J43I36UgKrY(SukzvQ_wfz*o9!%Rw>Kf3HBtA z79dDb?qzuPAvla+UxI@O_9HluV1I%Gw7dMfFvx=m4i(=+T8+^kPH-&25d=qx^~lzj z;Anzl#zY=RpeBEUI#V9G=kHI0B2}fna(0Oo8UZxa|opP z4^mZDbN?S)NN^RwMFf`2k9wm5O9Q7>_foTD1cTW*KOYpQIR4qUF~KJ~uKDs1e5Pns&R-D7Z^6NrCZDefz9aaC;9Kn_NCAIuynZD3m*6LY z-v}C#UkH9yVBsfF7eNO3JHcNBe-QlHYK;DGf`2r>_WF-->}d}?lyEFUHT-L~P#Qrv z?vQ4D!kGytAe@qLLc)m&CmK)@PC__2;iQCP-u#5-6`(oBa4N#-38yBUwxK0dy+AQE z2NF(a;?6)g;}GpkLm24`p_=~*XKQj6$2ka3C7hFRE5iQ~u0S{!;i80d6D~kF58=Fu zO>J;K!ud6u#3fviaACrQ6hKZxm=|d=go_a_MYuTOl7vf)I%?mg3037MT&DFUT#isp z{tBrvD-y0pxDw$Sgew!SO1R2^hj2B*)iqwc2-hTBhj1-I)eDqK>(?EU*C*VRa09}P z2{$BEyI8^+@%?Q<h4xFg~Agi`$5jVO0L z{0r4Cgu4++{nvYx`yVauNw|-|RQ)I1dnoR{g!>WhKhQJ+;emw55gtT%IN`yB?FV{D ziy=HrrK(Th2*RTYk0d;*)fmh%gvXA_dAu;6KzI`2Q2h^2COlUA-@C(9E2|qKM&qrMp@=L<6S}$SvhVU1{ZwY1E z55E)T_r~`}LK*(mew#lj{t{7OzY_jU_#5G$gufI1(Rvx*zXov${~;QS@L$6JG^QbG zIHRHZAB{t_IMKL7(-VzHGzHQ4M3WFrKr|82=qmux#G`=}$)rS+5lucO^OQu>5KYzY zlxXVKN+gXS(#2nLn1N^>q8W+iAexD27NVI)`I{4qW+j@f;USuRbVt#gM01Jqe_Gl6 zuQZ~$oByGP`oyDoi53*=d_?mTEub-NZHX2lT9jyEB7O5S2uHM-$#V&!Rfv`(T26SD zlIPMy%Mht9pa|s*MZY}J3PdXrtvFCN7^0QiCDE!x>l3X;w5H%!m**NL)>=gC5J?Nr zpUb*L>***u=M9K97OxHExsmZzmp??C4!}g46ZMIqPDF8qui=Dg4co=ycRsUq{ptjj8{UMP#?p4aOzv5_v=+kxvv1 zTN?~f)M|)gqLe5hQpI1n>ufW%6b(^M^axQwbSqIwR1;N0$PuC&iKGQ+d~;Se6Wugm zkchV!w%dr*kWX|w(H%s0iF{{kHPP=OdXVT|qWg)4u7H%+1BT}zB`D3qM)N4qTSSi$ zJxBC7(bGg~{wI2}&6en?=9_HfXTwNR9nO zueVl_-!#a#i9RNJhe%!Z5WP$E9+AHJHw+(&>7&*~{Y>;7(GT)3)YSjzM|Dgmh=1I}u&E?deV| zj+4-xl{_WcLf2gNOz@1Xid$N?kaRw6JgbXp6=?# zcTKvR&|Qn}`gGT(tHyr1>kPTCXOJ7vRg*tma|NVi)e%}+x^frPRrf!1H#f>H>F!2% zE4n+=-J0(9bhn|q9o=o!KcDtrkluwV{&aVwYleTV-$e*z{@0)H?sWI3y9Zr0?bF>; zp633iyAR#{=t})>bJJc2&^?&$fdW3Ld72ClF@mZ8-NWhLM)wH1*U~+b?zwc2qI;sG zcQoB&=pIk^Sh~lxjzd%@7^;)#o=x{;x~lBcHNOIMPosOf!KnLxx@Vf@SuGFUbA|}d zqkB2s^XXnFJo+a9x);&ClZ0& z-I#8Nu20vZ>qug{3($4xdIMiE1$0A08`14*t3GF$|GPc9nSj%w-1^3=pxdNT(j93u zbX5zWTenEMHyGhYgID#R?#*;>r7OkXe0<_~JKcBa-a+?ix_8ojgzjB*?-SGAbnl^i zZ_8t7@2C3^-3REJ`QNb7)xQGMeU$DKbmj6#g??N!DEUdcPpPGN(S3&QOLU)YmUN$^ zD|i0g=S{2^hmbGReUt7hbYG+U>X80*x^nqrK1aH5DR*@yZyTO>>Ha|XJ-VOLeV^_} zbU!dA)dB=8_y5Z46Jz>}?l*Klr`weMFIrghq}$a0uk})YYTwfRp6+)_DQxYN?vHeT zr~4D#UnE4Em3|AL`)iA*`YuL$LwCE|j_3u&-QU=dBet^}qde;-wT`4vKgg;?;?lC0?0$ zIpP(GmnUAKwYE`+R~o{vLM-(^Huc{eIPn_9Yqm(@wT$mN#Jdr%OT00$D*nXs6R_I; z2E-c@t1h6oqm-KvZ%e!>@m9o}5zGBgtm}URBi>Sj71h?n+YH=^wcpu_@ha&E0I1eB`m{{t6EcIWr9U`Hn z_-oDK#3vFTL3|AHk;F$6AEijd+A~G{X-183lN*)A3s9;DDh(hOd}9KLHq^rlf>^5KSlg1 z@zcaF5kEuxJn^%{&y5-D1>zSqgFfMx6+lIQr9~3IM*J4>>%^x1E32OW1^Ko-^%W5D zd&D0Rzb{JlQXqn^{~~`({0Z@ABCGjdGXGqqp>z0>_!r`@h<_yhn)q8meq)fT{u6&s z{6niT`kzGq|EQ$`{A~2U68}s58}VPnze}t?i2rP@CZeZiY~_;Z z7COWP+AQvn3PJ-;!iv(uqkXp*JDPq$HPb!?Csu&m1IklIZ$x zIOisrmt-Eb6b8dQKgpsb3y9-_Bnyi$)B=)44017&rAQVh(Z!!+Nlm4aUz$XX{Upn@ zN|NPT$L2}00?9@sE0U~DvJ%N^BrB7wq5;ZF*ME}LN!BEh%OBa7xSRT)tV6OsiM$9T z>kaq?vjK?=|N1mGCfSx`6Oye+HYM4dWHW`=)-6a(<=2|6RoW_(Z472R5>@I+wkO$v zM0J57hMh@vB~kUi)syTtB=13TGRdAKhm!0?auCVhB&ynz?9;$V3rJ2S zIfvvl5>@R<)LQ__87+gzYW^otcR{i|R|!gU9*MgAZ=glNHwJz$ZGM5&h zgxg3SB)OeL)p?RT@R<-jb)8|C4t~r0gf}HTuSdM9=>se?;;<$;TvLk$gh(ImxFapN+}<1<9AK zuVMI_Mp}R}jVH_T=}n*kN;wg|3+PQuZ*6)_{hx>4r1WN` zHyJ&t@V&|DO+jxedQ&Q|c3-`z>FLUEG}FuU3xpvTaVu6^wy`hF})4MeM5Ts=3l3(m^Y!fDZS0cFp+(o#^dMZ&!Mw_1|E2r?*ENo!*}G_Mx{IJ@ppQ z0t`&oe|r1VJC5D~^bV6PA4u;YdWX;(z5l0o=)jlW;q;Dfmh_IGcO<=|{txpp^oHtx z?|6D=&^v+N$@HWV^iEQ2`utC!cN)D@2PE`PAF`fF?;LvaBG5Z~2y-sI^CjE!S{}o8 zA-yN)T|_UXcQHMm-X-*|p?4|0D;f;F%j9{v!Cy)5Dov}bR~!Ac^c;HE(d*E=UIFy? z)}m)?e0!eC%N0&_ShjfOE2DP@y*|B4z^eY!E9jL9piil$ zcQd^adN+zyegaV6&jzU{e}lY*-fi@5ZI=SRUCEl~PI`~fyNlla^zNp2FTHzIZhCk3 z4Iv+(_mH@o`M>vYOVVQKsV+e8F?s4PK<`O<-_m=E-W&9uruQPfXXrgA7*+q9K=hth zg7SUAXkMcCD!rHKz0zv*aVgAe^h^s-zHid|nBH6T-lHeOfA1Z7?+$y>d!OEi!Y{7? zdTSqwsv{^Ng>+ofu}Q}nFo<3i z|5igP^zTdKKwpq??dVPP!=R6r_!QO41ofry`ZUkWMYM)3m-K zPe(d^n}*QNNIE;|Or*1t&P=K+zlo*mzaZxzor`o%QZxVSz09q^?a8F`lB!ZqI-fk} zCsp%*YZZ-jgmht2DgN4PG165?7bjhwbP3X>1-YaIl@_43zYOW<@4uwx6+p$3j*zZM zx)SNigRKe4s-)|Xu12~hscHwJTtf+pQ(AyxSlejUC0(C%y%s5$4M;ZLrIS$Jxnw* z{HI4KjK&{DdOYdTq^j(b9@9oAJx&RFUnh{Nv7c1601-|mJ*AZm<}}g^Nlzy|hx80m zDf{V}27k5&s}SdsUO;*tsTuwyia}mPs&0EoFDAW2DRsolNTmy;m$wlGbES!XHR)TV z*O1;zdM#;9dL3y*dOfL2+96eypVTsV^+SMR_DF+9CN*yXN)C;+OPZ0!q^jnVs`_t8 zQiJJ}syiQ2RsTgONvlB!aU3DNNd)x@KzgG*2fMqO^mfu)1aK?qZQ56}-9dVn;O}hp zq<535_W})5g!hp?OL{-)lcW!jK1%u^=_8~Mkv^=EX3G-gF;Y|c(qGr}86P@HcX&D&&AR#Ki}gLy z_enn@{eV<;0kyj^a{h$$E7DI%rT(X%8MZG-zZ?_!HR-pFhV+{O59xO;hV%#0-$;KX z{h9P939Y{jBCDSRMEJG!CHhMsmf0_r?JjOX6AokAe)!$ezN(N8^=MT>%MfeX@_D~?*^cc}Fguft zG5nLMSA*t{YCfiRO_YtdV0g6q9+n?+JGSvmNQjr`?b_CfWWQUO* zIxvwP-g>o2vLl5-zXgyTLuQd3OLj5Yab#zZ9Zz;L*$HGPk)1f;X$7)V$W9|WRk5}C zsL=8Xpb|Ti?0mAb$j&7@o9vtcrpVI~n$>i$Bk?fiQp)9W>yIyIOsneRsY_gKfA&VPdGMCIF3(0)4pk*`2h|CQCvOBVb zEF)8mKzvgZy)PkhvZ6H^Kt*;lSxwgFFhX_%*^L^b_juF5h3poxyU1=OyPZs0fX3WG zrYpaRcsJR-WTP#B>^_~m+SCK|CntN5>~pe*$X+9RnCuy{N64Nedz4I7ezM0*p6b8< z8A{_RvZsfZ&yu}F_8i#@WHSG^V0Ef5ntWa+dqtBd{i{a*I@t$gZ;-uB_NGz3WrTOg z-Y0vP>^&XMFgF0Q56M0i;Ult-$vznaqX1_9&%Pl0o$O1pZ^*uCU}S3kH&MPN`-$v3 zvLA%)`vDKxkF8ABu>DH*Gnp>_t*=n&`Je0$`s0xONq;P|zsOYOC;Qt(`Iqd!0kaaC zH2TPM>{d^IT>8x=|9JGJ3-rg=zI`?P8+l^-lhU80WiZOg48s)k7o$HV{aNWxMPKIs zzO;b;GzL5!{Tb;`-z@3Rpp3`<(BD+M=vbT6-(pP7Ruucw-m9{Uhmb zPk&$fJJ8>q{*Dr&f$d6vXZpKn9=#)7|II<|L4QyBdyC6nEt38|O3?WI=pQ83{pERp zJP$P1gXtee{}8h@EkJ!1htoeo={3($^v|JxH2qWQA4C6m`p23ajx(4O=$}M?wEojS znf@uQ)nHDee0d(sJo*=kRlNn!zn~2&@0e1dpnnzp>*!1U@2mPx|JoKN^7ZsB5lsE>+w@)fj>2d*kG`4w zb%r7RKK+P(BH>gQps)IcP|1rxKc%0wnwCdQIepav=$G^>t=C>7^zWm81O1!ns}?|C zB|u;5zs}?q`ghU4mHzEwx~*lPe+T_LTiN7rH~o9*%l(h|8vXs^*wp_==s!sRA)}X9 z03GE~O{JngPChgJC+Po3|4I7q(|?NoEA*eHFE>B^XXrmWgnyp?ixT36R!RRQ`Y#Wk z1N~R&zeWEw`foIP`a@ShebWN^Z_|I5{yPI^;nZD#{s;8G5Y315KcfFB{g3JE|MJJg z{fxeP3s9l;34cld8~R_-|9Z@PzNP;?{qGdG#jB00UeGM*|3p4M{U*=9=>JUrcly83 z|8>AX|Fy9P+WXdvg@|xa8vva%lAA6Od0y zJ|X$!GHKBPUP3IQfziZizM@@}cptCO!uzJ?;#3~Q0E-O5I@F8TW8>kTU#nS4X?Ey*_`-<*77@=eJ%8DPja8x5y& z*ut=FMZP_GQ~$RmSMz@hBi~NRI)@#Maz~@tnfyKSUC6H_-l_XvSC>CZsWnHEA4`6e z5FV{eis6_RLw+3jspQ9#pG1BF`H8LGSWhN5^}`RRuL%s~R=XN&0^a;f(D zxw6#rKlugZ7mMaX@{1b5FkC`@Ir*jJy7C+S6+_Hdk>5ssHF-jQ4Y@~tExAp89l5Ic z86U>SK%-q$2@w&bb>2(lu- ziM%Gik$i;whG8CY*E<#P&E&U`-#SXA626_hDbaV3-y`@t$?p>3ZbhY|+)Mrt`F-RM zkgNLN>V@+`gL# zkK`Yde?|TY`RC-HlIzL8Wg!28+}!`@Y`-S|j{F<)Z^w-OJ-M#@#`h=kU&))V#4nP` z&tu|M@hAU%pd|m3TqghgFLD|F^_l!j(G+~S|0%{&c(ZGYu_?w;;o97a@hGNJw8i)o z6HrV>F(Jhy6cbUXTc8$Zz>~HbipeRaq?lsVs@bNdn2ll@iWw=UrI>+YItn%X{~zQ` z6za~0VrIiR>i|PBJH`Jf<`BS~L;AUfCm96r(MG zV&T@2Vo{34DdhKG$%SnmH=S1@cVQLI6+GR11*wF-r5 z4aT~9D~L(G0#K|)u@1#h3(z^NN3jjX`V?DGY(TLo#fB7{P;5l8@qk37q4AqF0>$Ra zq)&cJ3Vri0fwngKZ7KGm*p6aXitQ>(j`Z#BZHT7UuU zO|cKfzJ_5x4O3YiKzRbiffQd+97GXO987T`#UT_YQ5;Hf48>s-M+(2{0u)CW+M_6r z)=~6MkELkXj-xn!5JFr|94skLrcmXb;uMNgDNd(2O<9FOz-P2F#aR^RQJhV2uHerZ zjwKrD2!)>iDK4V8n&M)L%PB5VV3qBq6s84e%@v}*lH#fsBUIN=cof%CbSSPf3CIVl zqSmpr{sxMhDAfEfQ3l_on`L=q^6n9YEM{y^`Jrs9Q+^sqF=XGxzR2c53 zc!=Tw3SIdJND6rcP`Ro3pW-o!Cq#H$yKAjp#uWG9b@tU!|LGc#Fn~Fs5OX|Ol_%6k#6z@@dNb!CHp!i@2`4Pn@ z6d$*a1HHgLqxifDLGcB}nDxK-nsOP6Zzw0G_?8li?5pgMxmsO0~n9IKU;sT`Yfe5EhPp&VD~l~TV2 zP);DG35|ZDmWOf@%GoFGRmnbC#Rf}a&-O|$El3tG)mCq(^1Y$IX&f!5=*@T zh%i$tv`ETXD5d^u>+F;ZQqDm+59OScs_aw#Z{R{XcPmrQOKEO?%K0f57+@sILX?YB zE=;*7rCk2EpK>`=|H~yPm!e!!ZMHo(btX%i1g%Ka%16!!yKtHB&hsqTCz^%aoOA5M8JyqP+m=Woe;_u zPaqEs&eLoT+lx|9*6M;SD1l=>EkG8_VTDPz4<79`Pm_t z=f(PhVSb77N6MEeKc;+z@?FYTDc_)!`M-R95RURq%C{-s8fb*)9mDe;<%gn?7EnqH zPzV0eQ0Px6zoz_@QqTXCpHr&JPx*z0scgR*lA9LrE#>#Z{GAT1@cJ!)@+YeCDI3k7 zls{AcMyVQs;D6P4#i?EaDF0}gDgUB^@^8w2DgPOQ{YNFkzc475YHTW1_Nm4h&8iwt z^HdX1O+_^!)udFa_)|?xHOYWbG?P)OvQIU6>m~A(Erx1ps_BG(8quq}AQ7ggnvrUT zF{yM5pqhnhcdA*bR->AYYB8$Wspg}agKBQ7Ifd|lRA%^ZzeUwNqMuiB>L~M5EiB3f zs1~Fez4@0M7HN@G`WA?4ajF%mmY`aeYDuc4#dj&gwoEICayhEy^-}HK%>UI&VqKYP zRS7Xh7ob|5Y7?q8sMeucQ;@3oQ?0G2bk6HisZvk19@Y9(8?^d{O_Up{rLsy3P@y-a z+Ky^7sx7JX{7)qom&^GU8#1{?mCA( zsLr6;lj>-yy{HbM+M8;Bs(q-`*iW_ZnD_&z4x&1+4QfIkZ1@kQI)du3W=VCpvg#;D zwldXG26+tCDOAT&HKqPIsuQS=S0*_(gE^@Ys7@a6$nsQqoKmv6>gL}(^9st2g< zpt_gpPO2tP)d*S))jb0+)qRajb^pLB%Ll0*qI!ht;enoNv;|N-PW1}a6I9PrJxTS9 zr16wIpH?pNZJ|>2pXxcaR8d}N*{EKmdWq`gR^Q^OUZr}6>NTo2#p`u>>RTYHw+xAX z1)zGD>SL<+s8r3Tdfxy(r244kG#d320M(~jslcC8k4yCh)o)Z^QvE>nm5_W*^&QnW zRNuC~tqYZE1V;Xm>SwB-S`F3U--W9GR8suq1gL(e`kU$xgZz_fbpEIMhw49Z`Bwp& z4C}F|)wMr0gXq-b80&b{GfVC!n5?dJ^i1sLlOPd-BRUsqvbedK&5}sHdWy zQq#5{M?H1Bq@I>q-TY8bH;60C8L8)`o{4%6>Y1r$73D03c{b|VTiIylq@IgfhJU@I zxvA$FlXE`mg{kMKUXXh96@Xe=fKF_Y)`i;C|9Wxilc|@W-idli>h-9XqF#-9Y3dcI zm!VcSKh(<(Vo~cZK)oXMD%2}cudJ;)ifRNV^VO->qF$p}Qp^0W^Iw~KoxvWd*ERU{ zskflsfO=Ev4XHP#*7aX;s!TS~^CPkNObm{i#*ir`Gd7^+D7J zw-^)sPyrmKlyXqiM@XO}sgI*RiuxGpqZPRQ)+x4Q4f1&E6RA(oCUpp^{ZQK zQ>ibaKCMwwpH6)a^%>M^=BGZ>AkQ9(elGO|)aOx~;a_KU;Slr1)Ynj7LVdZ=UMf#% z0V>KB)K^ho*^-M%7k`njrM{k8?tg??GU=Ed+0-euLmg7Pg7>ILfB&TpT3YHztX=Aa z+Png&=)D#o){MFop)b#zx)`!nN>(m4^++pAGB+}^Gbt3L zrM^>Ow^83teTOD&_oCSDGJCm)`a$Y@sqd#&^?!h*exQ}99~$VXAEADNTGfAQb^lL2 zH2>F6Qa?-ml<1$PenvSqLG`Ee9QBLT&r?hBAJxC4V1lH6g<4g0>R09Y8ujbc(go@_ z4CXB*X#6|WA5yoR;_`lL8p3=;{RQ>M)Sps+GNk{E`twn+PV!4RH`M|}_=b@w zslR1pEb8y5f201M`e*7NsGBe6kJM89&0gA_HonxqP!A3N_3zaGQ2#-#%0BgcnW04*ydM6WB_p#iG6y5GGBP_Ovnggd zvB8s(IgQs`j4aH^+>9*1$UKb9C+_na>-(SUq@$1vrfX0U7$J&_2rZhGw!F@?%a~j*wkj+1hEoqFT zvDHAU*8g&{HAd0ck;b+(wx_Y3kXQC<^RLP5L}M2kI}b3({ZIKwV>cQ{(Ab^EzBI`&uB8VB?_Yp;W8XxVQZQdXeQi2yv_?pho~n>;xJo(KxXmi^j<`hsm(sY5#^wK){Yn~F(YRK# zy_&`~{Vu5GI+fR#MjAKLc$mgbH145sGmSfGnEk)r|1|3RpT_Mp?ih?hL+iifaCd2^ zaW9Prl=(iD_g8qq$Pz$9)&*mv@dyo{MuUbiTH0inO(F&9&~RyZm2tSg0gaGGOhcCd zWmCes{x>qLEoijVm}5;&qfO&u8XX!h)9BK8ibjuy7W_s*V@Q&$=G9{~o}}?OjVDUW za7vQ%(=?u^@eGY;`*s@7l{$?VXuR0>qVZDA`3emw?=)Ve@fwXcXuLk){^o%GHjVdb zyhGzX8t?Y)r9$Ha8nW}J@!@cjWc3M+Uuk?w;~Nu^#%DA>r|}hyFKB!@KJsfxsp_ez z|3A|Bj>Zql`F(|~T7RPPGmYT_NaL3Q-`{BbN8@)Ie`&-&l%cBss{c*n9~%Fbv8ssH z1XvSefi)4uGIaKzUOMsDBvtrGTHC+GeJm{H-(9(`|cx}-mfOTYz9EWu#*3noeU>$>XJeCxH4OG?t z8hIktX;>#=>79>tatTx9sWs+wW5m+Ue?@W@)`eJSW1X)}=U|yo}5>oTm%t4Dp;SXW}1(svcsy;xUc-GX%u){R)#VqK4=|M;gu-XQ5!`b{MX zmK*^z`CGB>z>t1A9jhEr~Y23kF=7|X{BjS(xTT1Ag)wgk(R{j~3h)e^nxMH@@@?N}YGF4p5% zJ**+Df%_lpQLM-M?i%O`tf$oL$toFPc)I3%7V8zP=dfN>%=0Q=C|lKC>Oa=YHU3qs zHx%<4mR$bS_BXNKR-~*E1NL{Zm%w@t+mycdv3|k&0PAb453xSQ`UvY2tdINnn(Z^J zFEon$1gy%JSYK7JYBavV`U&e>tRJwx!}@;w)*t1u@-1Kb&q7}L{)!FOZ&?3e{f;Fy zAM1}A{})!h`L7uM#hw6bc>iA^?Fq3b#hwUT?)Qg=Eq)8Lod*`V=pwIFQToBVlRfhc%NL2OJZ-2y%hGk*h^!tguM** z^4QA?Op;lyocfdll@}6sb#qjKJz8K>63ima>m6OMt@G5v9`C!`>2m zee6xJH^A1jfGtZv9jjUeus6lt9DB3UUc1W?!06apVQ+&yQuVD%qmkI7)Uqx1cBM;= z-vRpo>>aVkVDE&z8}`oFyJGJmurj*Pjvml=FLmrau=mE^6ML+NsP2F2)_t(|Q~SPk zto=(xjR#^MjeQXI;n)Xb>;B)a_Wy;a`&60{_GvViz&;)OHS9C6Z^u3p`)cg7urIZM|Mv zhXFUL@un)4^z;_B+^X`n5{Z2Wb_e@TYzzA?><6*$#=Z~x9_)KdOdaul><7lTJcO;6 zKQd^KVC&`2@T<466KoULjF^M%))75Ji0!Maia)lj1qOf}3ru@~onq(M8MYSxVdi!T zP<$8rY3v^M6W9gzW7tF3auz5FHOk|CT_2_XW6N5g$}`w6Vn2(mHQ#=&1Y_65U$S}$ z`xWe$%O;V+@M?{Go#q7CZ(x6i{U-Lu*l%Hffc-Z1d)V(_zgy)~_3?dqtTV)x{Xe#x z1(fy^?60st#r^{OGwjbRWaay18C0a?@HO@~*xy#his5_gU$B3`E{F6-?D`5w<6`R) zAnw0n|Bd|{_8-{t<8PhApV)F1s6tD6|6u>85&s>}-h}3iG$*7v8BMwTr#UfADf={K zEl@=c0<}Il&1q;(L31i?nsT5?mH;(QOLGRA)6ty1-zrU2>j;|j(42|p95iR9IV(-A z|5fX3H0$DDS>~iUSM6Kv|24|IG#92hAI$~yasDzE%>`-JmA_(Ggyv#27wsoQQp*Bt2k+B7#%&UI+6OLKkI^$4J}bvHMpxsm#6@vkCoN^?J&o6+2X=H@iFp}7Uk ztrWIp?KqNVUHmJrQ8c$x%(f*)BW_>kwj<5mXzoOF7n(Z@pz_+4=I9brc}Yihr#VL5 z_n^5KP5B{UfO9NOz5kJ!vk%RE2ORgOc`(fb1TU=z(mbft4Tk0+G^OU#toQ%T!}ak9 z!BqJiMe{P6<7l2v^JtpK(>z8oTKvUV)&gZaf#%6HtNS0CRsGkdQ)rs{e_BObF`q&6 ze41y{Jcs64(j;tW*Kwu()0E{v{v=x|{xmP7d9gNKRNF71SylepayiXAXR4rf&W%Sb_Wv}c{ws+Tf10<`tnYs+`&~32rg=Bb z`)S@o^WHkved1VQ9-#SPX;+emYWpKJU78J=HchJnNKZ{5r;j%ZO^;?k(=Q!s_pnxC zoULglIHm}sG(V%6(R_|(i{=wFbD9OsHq9>0&Onr2pN-}a&BtgCECJHlY6+nEB+aJ{ znC4TZJI!Y_t7iw;o~QX1%@=6CO7lgUFDu}sI>T26kgw6yQ$X|efdt;Hk#E!dfaW_i z-_wZimX0)s>p#s8Y09>rX7x{iXnsQT(<($Y=AYC2hvpYF4eU#r-_iVv<~KCImOzS8 z{%RGV`8~}aN;}OTX$};B3G_2fDfKjeq4_J#-^P#i2hG1|%0ZxJsE+_LX#e6&Li0bI z32`Qnpbp}$--15s65vc+T5$e{GbPTXIFr?u$#JHr@WWnH;Y^J)&7d7;I-KQkrpH+T zX9k>kaAw4r4QB+-EI2da%sf7R*8U^T>^O7b%z-1n0uT4a(fZ#XF=t*JJrp=v{MC-L zAkNY_3*jt|voOwLIE&y67k?pCPMjrhmaO%q`cZTomch~ezZqv|IcXAQ1)TM9R>YBg zKF&%iS5~=7&9fTLS~#n#aSfa`jUr7|#Ih3ZDACgEpbNTY$dRoQ|;T}+>0{`=QNycarVdA4rfoC?QwR&*#T!KoE?W< zB$J)XN1R=8cE=fwvs)RfjyMKqkIJI4aQ4F47iTQaKE@Yk?~1VM?|uTV^aF5?!8s7; zaGZm14#7ECz!lG-IMvR-#vg%m6wZ-VIO*v)oTK}X8tzz}lW~s2IT7c0oD;^6UKf8! z>=ebHS^>mzI?k0iXW*QVb0*F?3OEa=D*h%A&bc_}jUVv>oQrYvAmCioZ^F3*NB93u zz5jPE$GM^(PT8))xfSPXoEvbi!MP4ci+}mnB;55SA1O~s-1tGd5lxv{5z=_tGD06c@ihb8NzAf^l&;j-9a{k#3^e0qc~FYaUQE< z)jt7LgtGs~(Y3&Nrp7#n^D)lzIB(&+fb%NOi#V^~yoB>|$y`OONM6HvL!-Q2$9=Pc zN$9t6KEQbg=Y5=aao+oXF??8uuIs<^3C=e-pW=Lh^O>|to}c%9alXX)3P&&hhu`nF zI40tEIPz~kalWrF=xRc<@DWLD7cDVw=oxIAyof3B@+^KM<$DJB? zT5X-C^upDD|5J{$I|J^FwbzJYPLqi{Gwv+7v*8Zcf90u80l0JGE`d82?gF@T8(-Xc zaOYD@bqj<$zi?Ku7Q~fmkGl}=!nlhJhb!NOyO@&b5kT0M#9bCw>%TlMjk`?Q1tnQd zbYWW_w>|>M<4U+&;jWCkDefw`>)@`6E1Q2MUmbTX+%<5=um7%G1eN*Vu8X@7?s~Wz z;L1Uuv}>#lYs|*_ST6w*x4Qqq-5hrd@e<>fqDb;1areUA8h14AHn=6qeo3^bn zy7{m0JL2w)yHnYuRJ-8rT0QD`s_$;NyW{SmfH8G$!~1{SvA74~?v1-Y?moEtDYCl% zDcNv!|6jc$+5h88{l`6|1gL%(ZU^^p-0N|VzQNZb=}kHS3`cN}h2|8ZsiUuSZh z`W`Qj75|C2TJYVIa8DLw)!$Qb&%iwm_w>Gd>4ke{jX4|l65Mle&odU>b8GwgxEJAG zfO}yXrILcVxQ=@%?iK2Fnaay+-z#yi!MzIi>e5o%uf@G?e9H~E_v7A(dnfKqxKj3U zZ?5@o#l0Q(w((u=sM)msyLaQ>t6ul?VYv6zm3M;3xwe^PXr>h=EL)#5LSJ&XI?K&%&VUonrkFXFzW%FEI^JZ)Z8<7+Cb{Xg!T zxZmQwh5Iq?+qfU#zJvQd?z^~k{jZZLsc=8kd_JllKf(PH_fy=@aX;&4u9z=Mj7Izl z_iNm5h5?f5ceti&-{ZueiVT9dS+l|HC}u{yt#*v&R38cRB7q zc$?tNZ+g5L1~GUe@MapHa~8aL@MguE6K^)Ws`48zyg4dgVV(<5_y1Lf z^WrUpHy_>t8h8GZ6K}yjIo`tBw1`-=7kG=|t%A2W-U@h2;4O={B;L{rTWTQIz!Kms zr>)D^3@d74E2-2gpemnL@z%gw4R7^6k7CxuTMut7JlXc+tzGh{zHZIAKHi3S8w@mU zgr}E3_2A=eigz&HW_UZO@8)=0;BAAqCEiFp-T!MQ+PZa_1KudS?eVt7+pZ$7F`CexoYx^E}!^K~D#^UXVC-*;i```^<{%A7$;~j`M zT>sT5OMv1J!8;xAP`u;u4#PVJ?{K`M@Q%PcvdXzaj>D_>|CQxfr8-U$tKPy1c&Fl> zh$m$quRa1uVzMHXNW9Z({26!`;+=_i9^P4a=ir?!uo5W@=axuiJ0I_Y>QM+UQsc#V zm*QR0_rjCnU-Msq_b%R*cnRKBc=zC4jdu&)HF(z>4BoYPx&){T-VJ!N?Z>-uAW&WZ zy<73_z^m#%Uj6&8cc)U_g?D#9v|8@Pdj#)3ya)C1e!Ti800|+*Ut>L7#=>jhxp)?y zgJ>B;HWf zBpE)2_axrqn&cCGyFTjv-+Q{w>RG&3@SeldQtv&F_X6IF!!A`yx&%m+SMl`b$J6@n z)%D+d6Yp*1f2(GGXCSxt@F&81AMYo;5AeRi`w;I_ypQlc!IO)i!H9UD;eCOpoBt|- zF9lG&>#y;C!21U8JL8B~-~V{}6L5w9vCoNTFn{6wjQ2aT=^ zl)v%*#rvmh)j2tOtG_=n&hZZPCuf@L%|4Id1j(>$TRbE%A@oM~QN=t2*`j3CTJc@EdZ8!h@ z*Ms;sEs^2%zqk;PGKZI|>J&fN_ zUpWz!NPG)lj{p^$gCF6$_`V{mTOj-ZKdii}@sAad;OphjFky?peC9d9WcY3TkMKMA zZ{Tk6+-+t{#5~|4~&QQ#P&tepUbR^#~vX^)&vo_|Hhr8okT}|9Sk^@Ly1d z7gfHbQi?ym9t!+dOR!q>@~32w=x^e`h5tVO+xS)S$A1_9y}pZt6XXZ@ABwRWrH}D{ z!~X>TTl`P)zrz0v|4aPO@xK_)w;UE>_!|EkVXGLv!~Yrod;Fj9f588--&97y?<0Sy zEx(o+{NM5a#s35UZ_|YTC;ne0tv>$Kr^5e_U?PGEjD-M#39F_uhhSoY{}IUkzhVw1 z6}@Vme8g_Q5lmtJH|qpb5=>7p6~QzFQ;*p9Dftu5X^lcK-GF5Vf|&?rRQre$R<;u8 zuKA=>ekf= z)=oGegha^+HX_)RU}FL;{&mEXgkW<5 zDgHHhOM>D3Kf%@nyAo_eumiy;g6))i+Zw#RI96|SM}l1lb|TQte;vI>jwTqRzPl0Z zUb^U`Tm-42OMvufEWvpMdlMWqXx zCwQ9R1%hV?o-?fk&sH$epD%TS7YSY=c!}WUeydRkUL|;KFk1pMEbkD!sZ?(fyj|hT z(8BqyHdVJk1RoH5LGU5LCj=h}SZJ#w0KumOvh64Mtm3K0|4TJ~Mer@b*971EUs1j* zEd)Oh&PMPf;lu<#5&TJD*nUy>pKHvo1iusL5uoD#Lz*;ag1-plF&M?T5Y9|E3t_$UFMAQrPPi=L9E1xK&Pg~w;ar6C63$IHPd|{RBnw1o zAzXlPA;JX*0Y)cWgm7_HWECJ>tjvLM3Bsibmn0m%`B6?e2-KM62v;OrUL993vbL{8 zxEkTggsZAcRsRP7QvV6psPStNUP`z&;UR?U5bj90F5#Ah>k)23xIW=Vgc}fUSmH|_ z!i_~K-)6We;pQ4^v)VGS1cX}=jv^dMxDDafC7>?}wjyLuqpwQ7<5f6aUY;Vo*sk?gK0zy_N8GqZ8IwK;az& zzIPEmOn5ipeS}*7!+WJw$qDZ#d{CJmDA`nhXh462ut8`#ViDSXyC@RTsd+rYM+tqx zE@42J5{85^q1OMhBZ5zAd`8$NY!T)a=kSPCw?KrtD1=4rGE^c7A0vE`@NvRt37;T* zN^^d)hCNNFoBw+BwDmc{=LugZF*Wif!dD5aC4lgiDie8YdjAu?UPpYB$b6e`5lu(< zHlgXrJA_{ozDxKi;d>h5eZr3jKOmHw|9&9Cj|o5NKbj^&DgK0?6Mm`67j=}c1XjJ5 zZwP-NtS^5;ssDuEm#s?jqspIZ{Le(DEdN6IH{q{@dfOAq57#TIt36-T-u2yDO-sqC7P0Gvf4g5(G;a#k`PTrG&RvQHGbNP zTxh2!T9#-AqPd7>B$~xwh(-|2RI};+Uo#<^m1s7iITSN{KSQE9>p*i8NqHxlhiG1+ z`Bm2?Kw>R05O*P>#fcUs(wZMFBH;v66@S&2AX=JeNuu%Ve>714qveP;B3hnkb)prB zWW!G+M*yOgYR*-NRwG(f9?S8pVy!{6F43AqYpd5uUM`xC8ST2$Y# zIh`TN7_JYV&VG5RH{URgd-|+F$Yes@zZ9 z1#ivJ!`alU&%tJ($Di5oC#3W4AC;>z^ zkxyjEU2U!Ff8><_krFyk8P;PG6Foze5EVozQHLla$`#WZ7?5_2?`o6OfBBOHhKL?l zc572 zgXkTiH;LZX$G7^90+61*OY|Pm`z5|?CHjygAo_^-5cT?)=o8{ah(0Brfao)#--$ja z`hn;RqOXa*B>HNQndlp$?}@%8lFBblnt3USe$>!E5&c4B2IuGTTYn|`t@5gR@dweL zeIBB}i2f$}mq<7N73MzylzI&Dbi@-9Pf0ux@&AbH`X5hH5If-W=o`rZuVk!H?Bg*Ki&s^%nvl7p)mf8CJ#IhEcN8-7N z=O><@t%B5<~ zWr&v}URHeTcR?(_6lmxbiC3!im5Em+UZr%@*6Jq!10Y_5cthefiPs}ui+CMkSqN(1 zb^E$HuCG$BfDA_ZxRFXZ0uXOvq;hUXygTvc#5)jgK|E4hw^UiJ0>oPrZ%e!l@u)IZ z9dSG2?JG;gwj=Sb#5)o1T=Hv(U26PjrPcah^?eNS0mOR{k0sudc(1;fBKIcNnjh~| zGwerP-TahD;sX_V5b^NlUxOY>G9U3_#9iXUiEkr5g7^aBBZ*HVK8pBw;&H@U_T!^# zwquE_oqugPf%s(N6NyhMEw%j=Vp#c3LmP^PEu zHxb{W%FT7$TL+@tPHa-TgZKgBJBjZlzDvP(6W`M(QO;@!Ailrmc~I>S5jTh*CYH)S zz-$rQ<69hJt@E)A(^1er)o_mBAJ9_VtFh_Ci!2X(NERYlfn;HlB}o<`S)621lEud7Swa{p&ZS6} zC0Uwenej2pkt{#HWkr(JNLC_|vQM&d*-E1O|B7vOk~K-zkft)v%Dy(q<|ONoY)G;$ z$@(Pg^)V!J5UBInh-6cejY&4Cx;fmmS>Hmk1<95qBaMZms{bVk$u=ZoNk)U>_c)8 z$-X29knBfN*Z;~(>VKW#!6c^a>*l{6C6dEx{v$|^AvuynP65V9GLEFG{59rSlHJQoKJEJ$(ballANworOtx7A!zs6iZ za*-M@ER7@=ljtgtTvB5$lcp-?D@vW@N~4fmrSj?;c`eCZB-fGLMshugZu^rPYTuhk zZc%()|C3vX6O#eCU0d%^S>OLBcazv8_mDhDaxcmKBwGKgd>$yt)#V|Q2Fb%Dk5oo| zN7`hS77~-QtCo8IpVaj~@#|iMq+gOmq#KaLB!7}5ByW+VB+rm!Bps4!^G~8@fu!F5 zCtZ@qNO~kgB!vXkJT>B@rB3oV$x|dxkUUwn4(C~|0wm9pyh!q#I?6(zN_`4QULtv& zLgiRsrnBp+zgyDHyPS)Bq%%>Mrql8+SsasTa* zd`j{;$!B6IvlT*J0z~KV@sFkmwR1n7>HpC;6LnMv{L>ry%*4bYhbKND;Pl0&z6RbVAaJO1-vBLOLnw zK>bfABb~g8r4dP|B%Ov-mH^VJ`%R?Nl1@)L-GF6=0euANT%<&Q8|mp=wTIyY&(^H1lkQ=P9?79d@bbV1U^jfHd}(uGMEReh0~zg_|aumtHc zq)U=6O}bP+!y36PsqFblmn->IU!iVYiB#_PNmnLag>*I2f%>1WE-uyBu1UHM=~@b2 zyL4B5T~fL8AziOBR`?A`uO;1x^bpdGNp~aNgme_?rlebvZbrI!i6`BnaukxSNVg`H zg`mn-I=D@p!?vV5lWs@41L^hyx$Q{0Qy*`9Np~R~Z7ig_R`%*$?@qc8=@`l>Vc3?KILeNlz!ODu2y?R;eiF9Ma23 z&n3M;A9eqqo?jy`B)x?6BGQWonH70yozLZ@SCL*JE;621R!GsWCcUPl(x&T3A0xe< zv_X0U={=-3lHN{w6RFn!w66c@t)#aNMkKw1RJZ+UUH?#Vf? z>r68i(uYVNCLMqOpIW2|sZHvWnrvNCE&ipKa!kb*v9bKN@5+I_W2* zpOSvA`oIw&t?&QSugJ_i|C(%B(r?H{kbX;Mitu-&zmR@U`V;97LMv$R;71 zluYY?305z%$;qZ9(<`9bPBvA^Nj44HbY#;G$IYfEo1t!t@iiodolK(;v9f@F)3EmR`O>MI~|UzBXP{;SIp zWJ{7Qt@`j1K&C$dh|6+hTahhKwjS9EWUG^{sDri=*{WnKldV#9sv4iw2Ku-L+1g}l zDt;}=ryO}1^L5m?ZV4t^pKKGd4ahdEEgNY{8~44)HYL+v0kX|19!YNtGP(Szy+)Gl zNwziFPGsAVZBI6eY&(s$Z6BtOJD5kZ9mS~bWIL1XPPPl#XfiGS!?e}@UtPwK?J?lB z7ulg?W6Aa-+gkzqknLOMQ)jh5*+FCnkR4dYDka&$WQSD9Du=_!j#QGvRUT0zk0LvU zY#iCqgUpJl>wk7USx9yQ+0|qxl3hr464_Z~CzG8e758ekpRSfO$j%((Bs-hz zT(WZ{bd}Y4WEUv7s{b{^MP!$fU93$5_dnTXYPp>3N>#2fvUa(uR<0qti|ksm8x(V$ z%Iixc*^Okkk=;ag3)#)$QhsYPbE+c%+3jRf^U3b$^Xuc?WER;yWDkjHI+PKm;FCkQ07J!k-b9}lRZI}kafvYbcZWRI8pb(AN`ULt#n>;S;a z??U!szlrQ+vNy?IA=6u+Os{|>?(1Z4R4(P4l778K_O|#|obQr-OZFbwr)0AEC;Ncx zW3ms)>iS`z*gk^ME|K~voR91oYPYX(}g)0&ai%xWK@awa23>~MtYv(TEA)@))?Ul|r*n1j}wYBc&>62kPQHIFvU zD|UsMxFb&8o7Muny#uWUdCBCn5JT_LT9~0NX)Qu)eOimsT8WnY{!43dl}o5xQl%7s zT1%^x;!kT?mCLErgFtHq)usN+-%f^kWwpo>Kx@^~PHQzo(b|~S?X)(bwGFLJX^o_{8LiDnj4b)LkXPT5 z`cG@CaspJ-ptZFOqwtTSbqlR+XyQ!qjqWqkI*itlv<|0rM2RWm(mIOPxGD$5(>jLMNwkiobpoy9 zXdN$e!+Zk!{2@{jJJGx#RZgaLDy>t@zgVv0o<{3*nZTO4V$P&>DXp_;T}bO}TIbO^ zht|0jTQwTz)4HIFqN71eFM?VZ)4F8DW>-mEjZW(_!%XXPWxj$|z4JE-NMcuO>oqE` zRe2q)8&$bpozv%jAVt>OZa9Wc>I1h}Inf9`g#VJ89iT>mD`UEibVw z2(5e7av!bxX$7<%pk+R#2WdS_>meBv!y~aCq1C8{$Pn)A(z0n8X%cqKqp+Dj`T9Is zzJC5XB}V;^mYGg1S`n?3R!l1?=bj`cGc79>O*^M0JAYbjF^*iFR<~5tSkQV(Yse5S zT?kr_(Ry4mlzJsU0nmC<@aA2M{xrGVNYHvl<+HS&qxA!==V`q|>jfR{7imeIr}Yx8 zmubCXbQv5i9kg^IXuYlgSpsOiskP-Tm2dYe46S!*eM!rdl+S3rPwNv}dJt%Rs7N8C z_3;4yQwdbY657v|{0j*!k6)FowDkU`WqS9m+P|v--wQzA?~k;8r}dNe#W?<4hM@I} zT7ISVn;^?dD6{Ji@=0i!`u`uTzi9oVw13xL{|dNd&L<$BNLq8q_0v!ua{c|cECSN1 zWh9@}Fpy7H`%XbVhx$&baw_tv$!8;^d;#*+$rmJF zMjsayqzE zz8?A3o2l?*g zW28IfOe?!Decy|GZykiOlA9r^(%6^$Jo5d>&m`ZU{Alt6$PXnyko=%>SjZ11KSXph zD}>p+_ru7KBtM+|2pQorF&Vw1$j1q@>1j2d$B>^)ek}P3emeOX@@RTg*6sW(^0TY)lox%DzQl9OOvuj{Ldny-#|z1| z$mbWyN19(uF8hCSz5FS^@%(b~a&BKCURByxkzY-Iy?W^qkn0kVUnjFpsBR#?h5SbH zo5^pIE}QhsQmz9|ek=Ly2go`N!m+k$*z|Y5BVAJU=J@O2_I8 zV_3%(SPWJ-x!Fr9GXDumPJY(Vl_!2->;?sFC(e1N^hlo>h8b zHf%<-TUgquH)admRZ~HLXW`L)zV*Ye&+(;i2AH`)i$-ktV7w8zlii}oJ0_Y|c0E-L1+wD;~m znkL%&(msIpezf-&j6s%Zn2OOpP$q`-;$Yf`sd9+QLnSMjONY}wiuMt-kCX{k=P!F~ znSn@EZXO)ezr=z0@}|E!g;hWqJ2K?3xv%Kpit@Wzh=R0UrhT_{bVkw-_B*UW%FNw z&3e%`FZ5R0SJA$n_SMoP9l3_~wHoNU(xUneD)oop_D!nGL}eu8#DyQ_HfT21}eg5Qp5C&noJLY2{O({9n0Uja&^NXewS1)|+k zWTA41_G7eV|6k&1Ki+qw{Uq(TXg@{!IR!th@)?!S3QQ*0^R!>3{Q~WmXunt*74R}` z{i4mJGJi6XuhD)(mDkH@Py5ZX+H2L4`cL~E+U84nm-c&Q6YckB0PVl&OiTM8I)?vWI;O(^ zM+Z6+ly5;?%)98wCs|tPOiX8z;qmWGN@prMlhK)ij@JMFtLe!8UmQ)}J5#HirsSbB z9Ua-^)0v*m40N>k3v9#y^UQSSqB9Gf+3CzmXEtdvpLtnTI&;vOQ|5eKvgpiBXI?2> zop}Uf>P%-oI`fzBPU4!X)mf0vI&>DIvjUxk=`2NO5ju<0S(MIV!q%@^oh9fj*?&~F zrRgk3XBj%n{{O31XL)(!X07b3NM}_#E74hn&dL&0%ZMnZc6C;xvnHL@>8v5Kv?J=Z z7M-=FYg*nl*1B{?(pitrrgYY)vk@J0|FfaIQ!@zW&)hF{Hm0*lwJe&MGt#HC869Ka zoX!?9m!#sYUQQJ{TZu&md~1^oooyr~Q{{}5M>z%1*^bWkbaql*j{qG#0+=e-*_qC6 zbatV$YdJqx+=OHgI(v$}EQY2sbjDH~PiJp>r_*7=L9;3(m96CVRVk9bGVSptJG6KmH$y1 zdYnpG0!(x|$Ch)0&T({(ujYw4-E>Z*bCT3R$@XNGr-+L@o=WF5c{S!y=Fb^)E~j%Q zo%89OMMvv@=WIIX$SW`y8PD@dMcws>fX;<tc?!2Mv-BPbDx&(BF6!xePN@pLZ^D><$ z)c7PFt^A#*=sc~h&&VJMt=50RKVLh(K<7nmda1OC6l8zoU!(Imo!9BSPv;Ff@6plw zpN`!BC{mYz&O55VEAGZ#h5LX`bws73+w9KA`pJBv@>7+c87W@!DSbibcRF9v`H9X~ zbiUOY{xuyvGMg_;FyGbS@9F%YL4PbQA|-RvyPxZ^(kr0OuWFZVp|R8XgU+7<&?I$y z{#L+0D*sg}KLOL7KqW@XhtQpn?nI?7QUH^vlx2wSq$(#OvRCL#)J2l<8 z=}tp;Cc4woossTzbf+&dil3oMN!UizzBALEO>=b~VnSa!$H)^}C~%dFU=f zcV4=S(Vb5%^Q&Ay<$@{~Qn|27+5FR8)X0*D?&4}$g6>jummIJ!Eqc|jW$CU$cR9Mt z*Ip~oU5W0B19+|f<$UO_N>?`abXTJ*`+vG}|3g>q|LLw()2?kEjZSx6Q7V0Xy1UWc zfbJ*-Z%B6|Rb=x|cN4l>(%n?`%~Wn~q$=_gfGS(niu@BGx?8K<#>m>fE#2+t?o4-k zx;xU9;$ODXmF1w;ccHuMfY<2SzB}DR=#HVgH{CtxYW7GFM zOu8r1J(ccBbWfJ`(R^9mQ{+q3y%ycm)N(rAGi2Xo?B#x}dluab=$=jYJi6!5Jy-1g z71k^(-SbN@-3#enY?d3k7l}oBeTgXJ)|a)idzo6~2tfA=BWui6bRVF5HQhV3=^DD% z(!Gi9b#!l_E0;oYf-oPi*=BU*2%yT%bZ?`33*B1T_**QVQ`YnA*0Hua=yU{d)dv^gP~vwYX1XFhYE z?rU@dy3f$n`rnP{cId`*Q&|+cNmW9-nXJ^^mJU}=w=Hbum}dSYhc4YAx;?sujJCWB zOOcP#eNvUj=sr&OiE<33RoI?V-=~Gj{7E<|{&b(C`!e0<=}N(;`+~lX7v&`ySXpDc zvfgRytD;DcUZ*z^-8bl(dGaRRPwBoz_XE0b>j=C<_g&dX$!NSs_kG#aDMPutqpO>u z?niV#ru&IB>3xw%sjHvS{haRCbiXiox?j@$ssb3!5-H5z(*2$8cXWTE`#s$s>HZ-6 zCBO{6_?l1VS54z*x>EcH+<%iJiFEl7y8qGrlkVRd{V#z@8e0FmQvVHuNCWOoAZ$J8 zO(;~xZjil+wMmPA?|<~P=JzJ8_ZRRiyaSn@Q!&<%Aq@)SC39{?pUtpf@|ct?11`ZxwoT(p!SwT=W*AH@CrP&hyZl zm)-*O=F^<#H?quM9~YFzD(=Gcr2ebdqAC|txwzmZ;*#{1Rb?r9TK`RH>Mc`!DZS*w~$Y!JRFtZb#ElS!{}{IZ%=yL z(A$;XD0(|+!rRi@PE*=m642qIC!2qIQvd1gETLrr>>{n23BA$ucB8ikz1_8GOx0BO zUA*?9XSV&rO8~un=p9IJUzxo!Ec?;hUwsb{Uz4YV(E8sySoK3x9xAQIMOqK1cPzal z=pC&LN2)wZ0L(taSF zFqhLa$y^~7+hEN3y>}J8tK~Z?y`-nt(z}V?b@Z;6tjzhbcLTi}D;~qYnQ^&U6T5}p zt>c{^d$-dwrT7kd574`l-o5nhqF3Ml%V_8lP>t1nIzH7BK<`0%rn3*xYtVa`-XrB` z)MH}Nv#U|6+#P8WPPeqv^Xc{I1@uySrfV_1XndDMT;z3R^xE`V^m6H!PJY??_B!;s zQj?WgPP@H=-c$63=siyFQF@OJpM2%jJVEbC31NziaT#k0!qfDgrT2^&`{&%=bMj~w z(B2F5-lg}Vd8DVyLGNXHZ_+a_>oxt9UaeM>-s|+%jU6V#lM zd+*Wvp5FWPKB4!41QK%77x`Z3$>mSkL3*Fk`*1+ zL+@L9--+D>GOLv!f1qdP!;kcSruUQJ&AmsjKly*5_nZ34{$CbTars^K)#?37F#)~5 z=>1FYZ+iboATtRy2Sv&eK;~@$#Y7YnN@!y-FUaIm$Pyq!RA_p|q~cOcMlmym-2YHa zA$U=yq?k&TsVQcpn1*5oifJjPH&hhU388u8=FcdqQ;bl&Tn&j`NM@l}mtt0mB`9X2 zn4e;H3fc2h=uZH}oH7&Sac+uvRhh@gl9oc20HaeZK(Vm4E~s*$5<{^F#bOkTmR;6< zEiMz!R8C29Ns5&ymZDgmVrhzH)u{E~e7OQxPCj8#R#4g%h1Nurd{(AdO+&9jq5uBJ zAjQ5q#aa|=P{`(A;_5u7Ses%UVKWxhh(z3ai`cqj8!IEQEW#sl0x?U6te$U-%%9X8buz>pLlIgu@l7(6gx^LW?~p= zs#CEuh5T$SQL1c5QyfUK8^zufyHo5*F@|Cf;W0tYpV?Ozdr^#)@5qqoTc+5DVn2#~ z1!jzr%>EPyNFbBEL5kNw6h~4VOmP^+AryxSxSS+1CWliTA^f`8Q--4`j-ePwakL;c zJ?-7G6vqkDOb=re-xDYvp*WG^a*C5EE}}S@;yemnAc|8dw4@iOQJk*KX9%GT%b65s zQJh0@c0UtoG9RPi7v}RRE;KsD1*Jt`(z}Z(E)k?)E|orta+%~K;43JuQP`CfSE+Kf zfX)50_+Cq)zx;}RJ;g(6yn*6Iid!jeqPSU*=8$3*g5nl&G}WoNjp9Ly+hs#8k9Sbq zsa?2BrR@KeN9sSty(+c-7xz=h<&W?fX=((1>hXj43?m`&duG`=2LqlQ00*+P+Nf7!qgU|wvg_HB>v?QC)XCCwy1hiUY{j6MZY#J zS3nmxWC`P0lG<|AmZG+_a;mmvs4c6#6DfJLv&&OkQP$TFU9OLM zcw=gt2%uctuNEI4cXD8o7TP_rvQO5dN_0md+_k{xcv z1F0QUQFIBQb_lgYE6QO;IozPV0@RMAcGSQFcT+ps;4uP~St-X+JBixy#;luvLr&DF z?&BvLayqp$sGUdcOloIomBfEd^S{-OpmvTSn*TKp)yVS=j-)o)kPA#? z6txSfUDRjmb6(sps??>_Zlrb@HBIT%E~j=yrSM8>R~hkYgV(5(2G5uhG5yyWyq?+( zrIZzKq9%U6ncAJyZlN}o+N~<0`fn@QsNGKOj=so$UAW7{@2+_6rKX=zQoGOK{nQ?y z_B6EzsXa<|6jAe@qZU$o zp4!XQZ1b~0ibpU180A%iuNi!u+8c(vNzJ8JqvlYnmm-6ZT7#NzY`S(RT`dVp z25J$tj9P3AO@oQSmNKg)ZG#d`j&zYMPg*eNOEQYF`dC-xx>^9XLYr-dEJV zruL204jd>m{o8@$A8OxG`(E?vy?;~t!QhWoQCipYe`>!}lwXBGanqpqkunN@P?se0 zr#1Q)^=YX6O?@(I|7g>#`>6e^us(@4SBLtfVvJDKr26E_(|m*a6x63QWGaJGD_uOM zRnt70@JOlpj1Q{}TzpM(0W)CWxYY}%00XD<=8u&$JfJ~#EH zsn0`wA?ou|pWk%OS7}>7IaPc?Z9%TQmH`m)qlqP`sU6{s(-`pt3^S#ctKW$LSFZQuUYsINtRb?R#n2D)P8j<_!Mop7ahJ5wJ?eHZFSX~fodrM?^W zJ*n?beUE|e3;KpA3MCHfdr{wSAiawE-qiQes_qNa_Z2C{B`oXvQ$K+EVbq6Ne}_{) znEHW+AEX^rpKNBuL#Q9Bc)xhK5sxT&s2^F<&7PyFA4C1vfoxu}+p`@q<7^sGmMap?)UybEHW9EQ4no9H9&{gX-s6@jNZcq^_Ue zpHTG+aOR^vin{piLh3J4zli$v)JIdlj{3#aFQJL^tW@=@!q{#w%9GTe zvbLT!_)OV4^=GL+XO!m+zEIK)e~J2Q)L*9lD)m=Xzc^f?NX*Xep#C~_hx!|mwQM-v zG*~lOSIz^stg0H+f1vJBPpJFUBkBS5a3G&aLtV7#OpmEI2d*2UQqqKE!g`CkjCGrO zXCQoAThA{uZ=}>GP|s9WCs$6r&|1ZNibzmtdU=cb+tk0N{top|sJ~17JzWKKpx-z6 zfiCNHeFLTbk-?8k2E#wqfmY_vsDEyhFARQZ@GF7Jpt9dk|Bm{%WwDa_zN-BZXC~?r zrN2`Dnffo%S?!=aI$M9knQ@>Pp#D4c|KUj9{sU)H^WmQcWeKneqI2ONqx`GTnFI$x z^pP3iOolUgi4P2a${41^nFePn!>86Nd4@lQGp$jkGpMfsI5U*fN1=Exn-^zhoLO;Z z893qwrASyhv*8S=1{oJ;c6F~a2hQAvSO7b7DW}rs5opM~ipZci^W$8GvjENpI1A#e zgtHLN5;zOv48d6hXHm`V#n%IO_tYoOVmOPJ+A0l8;;di>FJ*9PoMmv9!&z1XOde@S z4YMUcirVOkl|3uttc9}*&gwX;;%IhK=Sz#~#x-!()S}G3eoxoNSrHvM-pHemX4&&|5dGQfwL2ibZtkRt;DN1TjOkx zvklI6INPfI687ddMbrs9^of#tWp+3_ z)=?h)B+ex`m#S}X-B+QScR9{GI9K4jf^#L#?KoHA$QWIXb1lv_IAfHvj0fev4(EEE z-O^bL8=M<)Zo|0==jM_V=N8j^s}{?VoiH9}tcHh<)Ezia;M|FG56)dUcdMOZ-diW? z4$Zk2M~36RfwyG}-;eWv@o;>lOIy-kF;8%flL#lpiE-LCKusei<|umw zkR0oDaIDwTkoZugGMpYxj#H>A9c8rvX9CV!+9Tt{dAoAdyEuR0yod7*&igo@;(UPf zG0ulLAE_mxL`Ji3(kBDqfQ`jxIA7v?j`M})ZP6*lA0{M@C0Ownr zUva*}5ifl&oH##NQu!x2t>-OxBu`~SfCvu}^s5WbD`H||V0 z|KLuI^DpicxRc;cj*Gg;ofLO6HN#dtg|@!nPKi5}(nYiR2X`9W>2asUwafofRYtEn z1MZ9^kB*B(pgS|}Lb$Ww&W}4Q?tHkjNpRv0s5a@EJ3HRzR2{>PmgcbMo4Xdfb(8x3S{NxU1lD%>rEsJN=y z%HY;j)wa09aJR$V*LoyI?tr@+?v5G;+8ucX*jW(6cQLrD7Pb4kOCH1B19xxSJ#}Sq z_bQ!WP>TB~QYK_~KivIs4^WTE5J=prhT*uQa1X>i1NR`@)8+LR_h8&ZaF5f#b`Ldp z81CVQ9AVJz|7h(|Ry^9^F$Rwns0)gFJnkvDC*YoB^b?gXFaGYyiirKPgt@0$)oDtR zwM^Cyi&)$o?caWAo1b1CjsxR>ExfqS_&D)#7Xx>CihhWwf_jcU7aPPpqv;X#_%I$5-y<68Q_nxYF zAMSYE`*9z}eE|1CGea20nGFvqn>-RxD)k8Nqei#<-zUltJdOK=(KS=y>i%E-Ca`Q* zr;?029jYsn{?u#W4?n}5YD{iY8?yI^+xUcD=@4jyE4TEnQtQo8ubOfrGl(V58 z>y5+UzW-)aXX@#Ydy-&OhT2izYAK6t>Q_b1$+`#S9$1NT=A70dY| zi~BpSK)LWK!Sjbv{?ytsVZJTB_=iYR_rG`@8k5ktj|Mb$p)o0qRcK5`V_q7Q)0jbJ z8&epZlEzdtrlm2p6{iuXkBo1_mH_3PUaeAOMjCS%G82uNY0O4rmXe>wtR;`t>JmU> zcCAu9mW3LY{2Oyu{PR?`^U)YWWB!W101Z9-p|KE+MGRTEYTb^2`j#w4V`;0^Re;74 zG^+gHSgPV*hQKGOy{EA{jWsHsHEFD6 z#I;L`h|pM<#!wpTRXpp{*uZ!;R7&64jc9B}V`HP+`A?&N{$m<8uVlBNvE@WkTO0p2 zRqeJkwxh8ljqNLn?f?7s?_|t7S1s;JVwU-;bf<~49`yRNOh90cZ7^5P6 zsq1LmLgRX)-%!$N+(_dlqug9lO#iJk?xb;>(Z?FR-QXRAJXXBRpyYpP=pGvP4%X7R zA5X&d0UGboc#wueV;qg=X-NJT=7(uKN#hY36@5BQQj_aAKIY&4Idl)gvO`J-?!~^8ebXx3lsmcq#NaH8sE^c z{BO+0@I8$`X#7CqR~kRk_?brkyw_^&6`*g`Z!}8FfA8z;xA-TG(k*|{_ExnSLJ_i zR=n9N9?k!isyXoH#9JJ1F1!Wt=Ej>3&yv6DvHgG99dCZT1xgL-0dFC^A$SYp=_*iZ ztCj#|Sgay0fww%~l6cGDEhWr&x-^thc*~YJo-P5Vc?GIj z?U{|Nw|Ui0<(??}AE z@$B$_qK1tBXoJV7lvUv!hj#(q@pz}>oq%@=-idf8RoywcWHYHM|9huZwP)a+gLfw0 z2)wiK&K_h|hQ5E!#XDbcyz?r`$U!!|QFxl_@h&uI`QIB|acc6%yA~y& zC*D1Hn*5FVZbkYXyw@oAl@z=O@E*o{5O3T>JP%dOj~Mf#c>T;@(I3Zq5l@pp-jjIG z;yq>f)2c*?_7Q+0n*Z^hH~50q_RV++ua5UJo*t**y@IDpgW<20Jchqv@J)j?fl`I% z;5G4FJReWAGQ{$KUuTyB`<@Zs$NK>96T?5m`v~vjK_0XJQjm_>(x|3pNOKL!4j_*3Is{H^m=@zZw3Hrg?MxE%3L)-x7ao{H;`~Z{arh+bV8tRpQ&@SNUH( zzZ3qR_&ek8hQCWGi(j4p_?G|uJxYZF@%O^t4`1^?{yzBoYE`LUwe7D(tvaBj;}6F_ z9{)i6Bk&KxKNR2czw#V1D2soXNgZApc_jWZ_(vJ>=s`9s+REY|S2^$m{Il^-#6KPX zB>YqHPsTsxKM}R+G%cE)_-B}sGx5(F^sP}w;9r1$4*q#oJh!sseEg9Ub6V{v{0s3f z>eKt0FUJ2J{}Ox$|5E(>@Grx^*7z^SzXJbi!>`1@N|4I_YZO;+jHxKs;g7|?9{(nz z-+-?Rgg)AroAGbO*Zi+fKTvP0YH!EC8(;VT_;=#p^`C_rLiZS5lYhm3KmJqr58yvy zRSy~*hyM`%!zE9}`6&M5__hS7^6`V3@ofq4pR72a#(xR_8T{w*pEZS=|I1n{>Jote zqEghVm+{}ke+B<_{8#a9^Z)-M_KngrCZ+iwzpkyTH(dO;@f-MEd=Edt_wgg+u~z^; zEL$;3jNjCvDDV5Nh2PKr_??myKQ-nIzh_8}UuczCYm^E2Zw*rL-@*SH|6Tmg@!!M$ z5dZzM7XO3Na{Q0*KgItTzdZk$b0Te@DQ^A6|3YwlTLOGr0<@3c;QxSc$zN-~!~ee2 zU-jZg{GafD!PiBh)Q0~newFlk)$^^Cq^qX6aU=4!R z)c^}KfO!+`x5LzuqVN;N>_&62zDpfLyM-+WcRYF zy(=C$|JPt9*pJ{K0?q#f2M`P=7*_IB37ie1Z`K=MtP#R+T&ix)zwtBMC+cPH;iVKyYD+7;&`0iC zg3Af6Be;U#8iFg0;VOcwOShDqMjT^M*9)`ldV-q>ZqTCYys_%q%~rgHKyUt(wbs^H zg8K+=C(sQ)fh_^Sou!mf?k2d0z>>cR_DAi0t9pQ79Dyc(ebn-Y2>yTm4<03`6Ff%n z8o_vir%dp10!{vgSNT79n&3r(X9%7rc$VO~K^v@JFDQS%^_K`-;{r3@Z(DJr-YKP zJ|mot;B$h%2)-crp5RM@ZwS7U4+RLm){h4Cky!n<#0kDL^Q86%f?rJMj|4vv*!jPF z=q8Wc91DIW5CeWA_+16XY`NW}dL;kJPTk;S7RpZ6-a1uqNcj2UjQxQ%^ zXlp_E-zq>jWyxdwQxi@@IBlO&PQ!3|!dVD4`4ieg5YD6wTGS=L^v_DD>78&k!U00v z_7mzAAVVy|%drUOCY;ZR^BA00p!O)7pKw9K1+>_gnke~)ix93vxG3Q=CN+d`F+&z7 zT#~TL|Ju`~2$wE(4no3Zjd?kP%M-3ZxMIJy-`2{6YZGezCtQ_q4Z_t7xBPDwT5(N- zYY8-)*CE`%DC-jHa$xxSmHiu9acD)~NJm`tZ$h{q;iiOodQZ3+p&tGaZb7&W;g*JP zrAm~zwIUJ>if>D3M?i{iub(a{V)$ka17xv!qW+d6CO=?AmJf|2We!62kYm>(j&zWB|L)gFhbk; z3%!iq@JPa=O1x}~@EF3A2#+N^-UN@+MpeTJgeR7`s#R-GCOp-uPN^uTDbnXZgK#wA znS|#Po<(>L;n{>E)K_AXJnETq3GL*^ib5nDNq8aQ1%#tYo2BlJtWYAYnn2_wP|VN941Hp`H( z@MsaX`~1?bj!4&FN|>pJ|Dv%Ve3!6C_!i*=rS~K4ZNhi@Y{pOc9^nT4WXWHGFq(yERwB#! z(QHHmB2F~BDv`(TS`f`iG#AmlL~|3()4zaGUc)GFbjXEvm0EykVWI_z7SekfA};Hl zeApc=LbMUlqC{&DNpVHFKS{Khd~Qy(IMEV@EU6!(D`hF7r43o8qAW|aoZd!`mN&S9 zK&?{BO4jbmdOJw&IYg@%T-D%e23HrT-!F^SBwB}PEuyv6HoF5RkZ4_^^|UA-#LLye zXnmp$20lE5XhVU94Anb(O4*p`G@?z2b|%`C$Zr12jEgpx`}{;(5bZ#;CDB%TH$b%M z@NG@BjSj2g+sYn*Xgh=3m-_*t9f@|*J5l055s`bj(Jn+s5bbKV?M8F}(e6Zg!-r@O zqCHhmalHaWw6_-JVobCz(f&r+&w`=aS46{z#PZ=p2U+cb$}a&K9b6(tw6D5EhY=lK z5hYM>FawSxI*RCIqN9n9(Yq*eBO*H1hVM8vTRnEX!4nLgXz(O~dh;hbh3HiEt=yWh zi-JU_6J2AP&mcOJ=u)Dyh|VWEo9H~fY!i(jl5a-HxSXqka@$a#-lmYwjwHIo!s!C> zFwrQY3k|tQt^yK`Hh8gK3l#sCmjhMLWkgpJT~2g`dRXt_9BTTnBDz|YOInbNNgBOl zh-~MtgLNIz%|zD|sk`LTGSQ7hHz~i2rgTT{utm2JN%t-JN4F8(OEk8eiA1*(+5P`W zH~&O;8NAz|Edl-6eIL;yMEBc>NaT+rdQc~q)C$yL)xQ8BdblJKJzD91%tXc$=|W(* zeG5QvxmO%LCD%&zf=%=cEg6DmiKTbX5pO{BJn_obS@Fz^hP*_)1kuaH(-OTxG=b<< zqBn_NlUifYR{)|nbW9bg5w(fxLf(O<=zj zLF5Yy@f^f+5!>!a?n0YA#B&qd=0DcWKe4?I#Pb_&`~QCHy8kC$*x(`t7d1G zPQ12Gx_AxZHHp_!W|{AjY-OgX$T|ksH6N}=yuP}zU$r5z-Cm1_5^qF&Jn_cFdlGM= zNkC>{j9k;&XM0iR}nTvTl4H@%g&k%aormUhk2{7ZBe` zJc{^o;tPo{CccPxv|jZu)4Oaf;!B7x)pfs26!B%E+}v^n@zumv5?`fV(~#cG;^Z3Q zF&Y)(D7j1+UrT%)@mS*PiEkkmr`<$+qb5~(#GmTwn-#Gl@vX%65%7Pt_7$*LmjK}* zzKb{|zMEK*?LEZzsy$+xEKl)$#P<_FP5c1yW5f>@LTN(Bp z@%O~PN(d4EK>VY*^e2OQ1VsFcic5eELUqFLI_{b}{-7BX|4H*<;=gEKK>Rn&9f(EH z4u7s2LUR&nizYNzra39i8EH;Nb6T2{Yr2zL?#(G^PHD(gdeyu+wZUn0I+wTEo72&p z!5F45DP#3|Ju_nt+*A#;rDKt-`dFmkDL{6u9#vp~}Sv2+gp)}8?IYR0E*3YGRzVV+o z5%b8Zb`;IKXkJM3PMuKAi)fCfIfmxNG_Rz2i7C94re6D}d6`-(chMEUqC&2+qJ9zB zkZVf1;n&iJ%GCV}&0lFslK+jS_~dupz{n%tsA~S9h@6~g zyORGUEdMU6)E@b|LGxcNN^Jtkv?TgvVR=XljIHmDe{!cXjE1SUbYlF#j zB(soAPcjq93?wsZ)rbT2kuAEIk<6^WtE0%QB(syuMlzsPC66evpX(u+lVolk)?_Yy z^Oc1xnMa2ynU`cf2`W9cNaoiFPZl6quphV5mISccyfDckB(nLpy;d@WWEqmhNR}j7 zoWu_QC2S;Im3b+Wr8SBq!sQ!15`M|DB+F_1$RsLv1<48|my@hWav8}=Bx{hYtobup z#o($2R~z_b1j*_GrD*t?B-`piO|llr+9X?%tV6O9$-3p3lB}mgoUBi>fo=sA-;iWz ziJRcYMzpU0Ywe~an;G5Cf08W>-*O`Ut&OscQp9p?dOMQyNwz0BmShK#y-0R6`c4LS zHn@v!8)^OzyD*%4J4nE+(=R* zxryXXlAB3xBe{h{KL5SJ%+sp{Bx6bLFp=8@sbJY$nZJTFP(X>Hop zH6uPt@;u3Nn!4ptJMAln$%`e0XINl zO!R-O%8LO#K-PRBbLul%((%t}NwWQd2p!*Z?OluAmkq*jY*P4sgP+D`- zT9(#4w1&`+rnML?&HS_$ z*Cu4rwU(r{j2^4DmNLPmwL9Vj>6fxCM{5;Y%hOtk)(W&%?7LCcBemSV{3SD8hNiVD ztu<(g@vG|)i*o6>e6P8+Can!=t)+vdB5TuHN9|F3U0UlIvcAC$lrB=GwK6?h8__zH z*2c7Uq_qjH&1r2)%g+Dhm0w0d4z62U(9%N;HCRQqG6!x=Ya6veow+To?ew=qTHBYu zD?)1rty0QPw05PnGp${8wGyHoU(?!+)*-ZZHwW%PYi~1ePlJ1@c{1Z#`_LLjYhNSo zXK;UmdJv?WPwn7v<2=ydK^5`fK7)MgUq|gQTF25loYqmaj-Yjp@!Ljd8RdHU5WaJ#5G$%2w{FRP$p-98c?U zT2H9BR2ii86s^x_Jx!}cOV0lrw4SB)n$*&Ij@I)gD7$n~BIo}CUo!Zz!B-5vDzG%k zq+X}>hSB8+Ncd|8>jvfgM<}kqlAo4G%h#Q)SxYORB?nf*6B(5AAHkbdZBq7#R-4u* zv^umtrq!kOHm%f}&J5-T3xhp_6AZp3P*wH4_l_xl*Wi1!^xqH+m(wI^^h1Lm2~@f~ zvb%15+Ak`@=d>iMzn~>)`Ab?q3JM1>S-kH zsSMheza+wyGOa+3c7d`#m(!&747C5CJtOUm_Dr;wr#&<6MQP8XzvS7T)!=OUyQb{{ z`N>M!v(uiR_8dl;Q~!y+J(uBg)1H_1Jc8>pc4s5br}%bH(_X-e^5?$`8?unW5?`d` zv4(~ieKCWJ%P&UKUV`?L%Af`;McaP=S@C6zvMlZ8v{qhBl(+)zwaugzX|H6Im9*_Cgw%0T9^=WTPdjrEaRLTiWN*-j4POw6~{y z80{Ts??-z_+Pl-%7Ii@{yZ_}xmP;d{`wKcQ>Ocsvp?#oGOxwXqQU4rb@X+$tXlWl#`&imX&_0^>k+hG}o(iWy+Q*bq zRq;65$4^vyBJDG1pG5mq(|NMNQ}xyIh-cA0hxXaDNBsY`&Yg(! zeA@cc&9q0-zJT^6v`5jt$a;67vZ>!j)4o`bj^zhP`+dBW_GMMm_Wv(ZrAn?ecopq? zXrkEDz=AdKQh>&X_h9&SK9O^_h~=TXVBK4 zqAip0In(ou!DmZm<9wdB{rQVZy+~XB|3yQ>*j}OS8uBXb*Oac>UZ?#A?HcVj`%MV5 z%GM1!eWG$UXnRKV4F>%x;n#T-(TZ9&rhI}WoVRGp9|4HqI|ko1_?|#R-lr`;mM*m)D&@5YD*DGp{Dk(W`pf*v@R`BS zX@61i*iS&WzcPAhv-~4inNq%^{R{2yE6yKi|7dLT%je}}|5=f7%Np@l+P@j{yFvMM z!*YWB>~Q-}x(^!hFWP?_@(&%!QU5C5nS_pI$PRQSr86y^$x2x|lhcv^|Fu4LqY_z*&L(u^2dGP(>sal& z2G^srenqz>prcCwouPC#GQ{$K-&dQ`snOZY=$jkdg3bkWwxn|~ovrBXMrUg}+tb;` zYPS_=i2nbVAv@5q)w8oBot?^BsiL!s)$TeGWp_IJ(bFirk z_NOzP&H+|COlytPiU-nBGfE6~wHWJ#ejiq3s>E~Ikn?hZP48|6+qcPZz8qi_$M zdj~0W?x*uKod@VVO6Ng357QZEf)5SySn-jvNary+PtX~!MeXV16KQ_ZDE9l$TJ;Q_ zm+3r9=LMrbXYl#T!WXUhlE8}c3Z2)D_$r;(lx|gY-Z0{uWzq0Dop0$lGOg&ibh>mJ zbYd%d27Nk#PC8`>=|qZ)2ejC%=n0*cQQ8%yqlnG|{qq+(8J$n)@onH+8I+4?Ur_;~>bpB9n z%JvuC$>{t|R}%g|M$!ELpHvsRlMWV@p*y+3Dd=jR@9XJKO?MW$)6kuP?zF}*ox$lR z;+au#)i4v?nM+*6>CQ^m@_ctTs~s>nd#Ty*Iq7Qtr>hHuJ}NaY-IeIhM|VlO^V40J zuI7Kbx+oa3P-WX9bQhz$Xhk1V(KY|m)#P7MmZH0y5tpXBOvP{i0-&6l|LLw^P?Ntt zYRSrU*P*)#-8JZ1{#Ulu=xXw>G_P6m(_Kpty0!$U?7DO}q`O{Kt4jdg4N57)htl1s zs@+%-mD-f>QEyC>bv>Fz*x3%c9T-Lm4`itg4Wb4A&f?sgTfe*qvk-5u#_s;8?< z0NtJGYW~-!&#;@(cc;6@Af4`BbPuPyH{IcM_o2JL@$5@?zlj7j{~Nu(1kgQ@?jdwb z;=vPf9$Il8RubtRLHBsNN76lpt|kAjCIA1dI@UBFR~dN%-IM8_Sm`;b(sPQjom$e( zZ>Q6}p6(fRFQj`W-E-*n^FQ6Qjd?_+^IW7HlA^HoFNAr}~B)I^kv=xTbWJDTpr zbT6gbPyR-{OgT-Q?iF;eHli*8boDO)47rBxwRFdnYznpZy0S?32D*39y^-#%bZ@F^ zZ>DSczpp`)ze$aydwYpnfA6HLsh;j#2JfbO&tR=l?xTBuNug^SRE@52q@rK*Ki!8( zC!wp!pYEe{8+0F|`yAczbf2dCINc{SWl3J`K1uf}dH>bdsIBb(ZM(Ml@7m^Hct%J7 zJWux}Gfe*ifbNU>yRWjD@4igek0+|GS=D2vHvO(jRp7KfmbezrfJ_s~kZyUVr41?!S6OEE;6cQ%ENz zJ(F}Y(gR5+CmlvQ1?l#rQi`)+KY`yw;sRIkfj1OpgaN+ z|A@8|Ne?DHiu4fehz{tXr1BSFC4M;R5fy%N$t;H%8?Q__0_ee zS@S>X^#*Ssy-^UuZ>lW6h4dcMTS@OEy^U1UKIvFxldj1$Pw!Cw%am80cNw&Q&(Vmw zmqMoPedPO+-cKeY@&MVYqz{t*LOPB#Cw++Y1=5E}pCo;RbUf*!q>rgi(JxS&dz|zM z9cwvZlXkVyr%0bAeVX(cZThabJog}dj`aD`a^;lshxA3#7U@f*G3m>suadsfH{K$j z^fl7gNgcEN4N}?vi&V{EU60z7?E@>iqzz-!KYt;$KY~dE!$X6Sz*2;?Nt$Rwav&oi zs)N`jO-VbX-LhXALXuR+?o65u+<3~sV-3=R^fS^P>HDM;NZ%oSi}Y>f7tQ8p(sxPU z>vzFiL@EYOP-^nH+{U7OHq<@h9X>1z9 z>J~NWZ_AS}r>B!aHaXd(WRoeIFyB5>d9o?UWOY!%QUlr4WHXUXLpD9x zv}DtjJyizjLN){0j2aKpFM-lrHZ$1(*(_wUkncDt)S$fr^o`$y zY*Vr=jJ}z{&DE-FgsA&}vaQIrH*H&!Z9}#l*|vRmmFu8{w@p~G9mx(L+lg#1vYkzK z7c$%PXZl_sbA)VnvOUT6(5}fN{t?-}C3}11b`o-gY;yMXL`vXLdfwkz2n8%1_upQ1`G(yX41u43;JvfIcmCA*&NGO{blE+@NUV4S5L zF;z8RMRv9FtJ6foHDqJRuC;kBswDZ#bkjdxB)fs^X0jW}ZYsTM?TT-2A-h#^F;xad zm5e33m+W@3yU6Y!yHmDRy45KUnX|je?irjQX2X4C50Od!f1vEI_2NOYampsMK;!)3 zQru?cqhtx0MClu3Udz|bUvM0!7&OWJ1?;^!H6NkE}-KlGVu^)v3MHJqB4r5%q?6 zPbP0f7LbK1+owyrFpmK*QPbSe5gE{n#6{W$v!3fq%UQCH=fVQMZ*{5 zGn0Ku_7B-tWRkSSGe41iL-xJRtZ$9^yMfO#Lw?Y{sM;S55%Yc~`$cgz;8)=>n{{7d zJ^CM+^!g7q%sfN(7nxlZli4KB-$i2kU-Bu*Cn2AV9P&x~%)&2IJD;3&pW195u!a^OU)T&-kbEH>CQ)KGSfh(ti$lnl zAYY7paZS0xU_9hYk}pH9O91)OYTnpC2cFtSd#ZLWN4_EX^5kohuRy*U`HJK#o7$C> zM|K_gD&(tbbK12JBpaLH>ZWiFZAE>x7WsPQmU;4Z$k$aHgjr^2-y!RhZ(z)c2@WOS zmV6`f&B-@5g_{`MRCy${a>@T6sGVx0tq8gN1-v+IEAp+$w^4`7$QmTyj(ivL?a6l{ z-+_EbT{XmD8ya%^2v{-(77JaTzEN8TXc zpZrGh1IW)NA7-4x$&VrLzk!n5OHHmH0h1qM@KA$?89dzJ5#&dbA8q(i0<{TwRODE4 z`)oJYRe)SS0wzC!{6s@e5~xp~`4n>dI5xaRn}kf>rMF$T2v)Bkv~O#Gx-DLwnUFtNN|nUlL8^LGp2i*yq2h|6waWLjI^Bmag;hhTG{)ZXfi@rxzhY4T{LzT72{g(ZR(w;7s;y?QZqOljOMc_@$aRq= z_YDRHL-NRw*kDtjJ(i{O7I~ZeEAkGxW_xmbealnwOk=yulX*e@9(j-aZSo1^a`Iy@ zK{9Q1Uc5v8t}+Wzwpg#WeZ?xa8^!I<{-;j%cz9s+O*uEN9C7eC2O7hXY$|3e-BKE@JG=C>EiZpJG7@c?GC;n8iXA3!8fn8n|aa)4wRi zViZHv)#7uNU7TWxa&cFRc&S*5VnvFj4PS<0IYX9JwX(4(mZw-jad}TyB^pH(D^b`H zkYwXx71blFWU(5B*tt5zMigsMtYw_~3SbTtmu^6@4#m3taWB?03)fe1ajZm0u_47! zYofo&q1c#WGYZZBress~fEutl#g-IX=rUx(M4>snV%vs7?Aew=`nw&)4ko+3u5LQA zJ5ubV%(_o_Y+%n}6uVIDPGOsWb@gs);pcWtRP0gOL$MddeiVCK>-$jH`Hvc7Z-{Er z{uBpL3@iB+>iCL(#!yJ@Sri9ToIr61#o-jT`7dPiuNw^At`tX598GZ~#ZhXN_C+;Q z9AgSa!?6^{QRv}MNwL}!DNdm{NhlO2_vz}%Qz_1%IE~_TCCWRd^_SvIMbv5HhqEaz zrWipnlHwfGa4yC9ruIB_j+_-p@=+Tupt#T&MyWQXTtqQi)oM}q^Awj*TtRUu#pPDK zOxUzmJ0i7LQe36D%3e)zjlLIXRT+WTQanL%9mU-g*Het8xPjs(iW^l!pXX)@J@BWv zh2qvSr6}BUnCZNo;x39iDDG5>XtwihwL#{7aSz2f3OWC|-iio%?emtjNE zv;NwfX7LuqyA*Fzywl&si7VuNxpn zs?Q95Zcsh~7X9MDuPDAVvn9=bL-DN&+V)IO%Zu+Rexi{5zlhrsAih$mpDE<9Q9ApJ zE{Mgi>UfAoa^4|-7iN%0TGUle~^^h)Nj_qF0*dXs2Yl%iNGvC*59-sGyY zHCL2SktiU~f*0X=*_F%kfIteU*C)^_J+zyf(BHy>;m=O>bp-%g|en zo~4U&J?bq_ZzU64f!>O$O&;-WnL~Q3&|8h3y#i>})AUxSx0WGmXc+g_)S0M=T_5eO zqfVAbR+ip+^fsZlKE0vzHlVkmW*cc#I;d{kh~CE9M+svgswX$4w*|e;=xuIeXPH4q zYRkS=vNZR^nTOKbhTdNEwxzcVz3u4jNN;<3JM^{L6r;Bjy`6QFFCk=y_Vjk8x4Zdv zH&v+4+=HIJ3TaVnzGpvrd(#_6Zy$R5)7zJxoC0YED?fLjSAPC$IjuLGp3XsfI-LzU znBF1EEFzjYWuOnEcQ(Dl=^ab&2zp1+JJOog8AR`BddHNOsFe0pj?P5k@$^nmy7HW8 zk$Dn5eLK)g;OYd4)l+Sh?a$wPryG8T!7~j`wEypoFrAkFd*^CHeQVEW!gcgU()*6y z1@s=KH;Uek^e&_~hTcW=E~ht|o__30?_%|>j?ty`?Ea_d5yxuP75pDrX8|oo@w9z@ zXwVS25L^;0I3y4txVyUrcTXTl&;-{IJV>wvcXxtofM9oacUH&c23}mhs+!%){h#lg zInSx7uBxtNO(rSpKO%n%-M6YW?M_82+)npo zy6>Rd;(zxf6SGyI@H4vaw$po5r5LTc@1^@eW8O#i{d7Mdv^pcH>c$khAEtXM-M0Rt zZWML<2;GksITpFo{W#s9)BOb9Z_+JQEqz;pzYtH;{fx?}x3d0Y!(aDvYG1Fc7wCSS z?icBPS^5m!x+7F&p4*x3SLl9~ZrS{!^Citot-YaL%gRglTXcU!_uF*8Z@Saye#d0q zrCVqI+P-pVEc$@%PW-om)BQ2s`ta8jKc)LKHLEpj<8}9Rx@&ZQL3cOZUz+D%(fvK$ zGmQS4?r-fP{YD*=jI>(%Ds;PD@q$_qt=Os*-w5g0G2IQi zrT9&{TPiPsOAalsPj_Sn0}FkjUfohZ?b=A_&di85mMW?zxeBQ6OdQGR2b_iJ{t;&u zx~0N@r~4E}L+e3w)!W~SN}&4>y8kkcP691!c^oV@{}BPY|J6~Z81Wr& z`r*uqGY8IWIJ28It4RsG&YU=NX^fIfSn5Y~ow;#jsplx1d2r^{e5D&W^J#5}eP;oj z1ueCI+bgLnX8_JZIsp(1k9>jCg|i~gA~;LpEQ+%@&OjU)3oP>JLWhMEXNjWQ;4FnR z2xn=WW!f^D`?5I8;VfU|t9eP)IfHRlP#Lk%_GcxWwQ*L)Srca!oYioKs2eg6II9+f zd20d6k$V9f`<%7dN}Li43qeYGgP&TB^`BReVpO4Tx>=*(57@YH2>8BoDn#u z;B1Vu6V4_$+u&@9vjxs(IGgL!5UV|_w=HqD#<3wl%2M2m$vEO{i?ajHb~xL&>r*_` zdfrhxQoBWV#@Q2R7o6R3cE#CEC3~+pXAkWFa>$VF$gwZZ-Z=Xd@ycvUo9>5mGS2=u zC*nw^N8lW&rI4j*=ODv_4G%Fq)NrKXVTOkbs=PX;cNsW#$v8(FeT?C;hQ}EmZ+L>B zXyKfsgtV6w$K1v_73WGEsqOP{PRALIa|X_+;>lD|IXGwHoNX0;mf;v3dA0t}G2`dz z1=w!Qu{amuoUfH2kKmmPto3CG5Qn83T#R$6DPDpz4rjcIi6>UQIG0({IKwd0#be&=E2^?&CPoX0e@I*(dUkXCryynR9)lbM_Iq}~uI@ifkJIM3ib z`=1ZmYGV9_Hb+Y&oR@Ik$9Wm&Eu2?yUdMSA$Kt=(6wkFb-oSZNX>+e2aNfq5hNE+S zoOi4O-_=q`NN;O>fb%(yIPH|F-Y+V`ZlXaM;hryHk=d_=^F-yq4F&WC#EC;Eul0wj)?t*li^4^<~TFOXPh4OTzkk5I6rE~)Baqv;7>Tx zjeo}ZMayeUQ~3?&_crHIxsd;`Yx7UNHf7fB{7q>#oPQ{R^Dm`Yv|6NkRsDHNvnpYy zlxC+i7o|BU&8d-J_`O+_`f0D08ZOO4X<>|(OHf*b(m-KSTC_-_v>2tudsURs)Fmk`RnQU~C@n*2BTCCsT7%MZlvbj& zJf*=VIY`B%q@@)ot*Ep(UyK5!l_{-CX%$LCw8u)pr4^*dmR6%Ak-z96_Kc~tCZ(Zf zZ7oV`o3(Z9RMvlN{w8f&8b)b2rS&MSue!pQjw*N4r41-;s8^-f*JDmfBPi`iX=6%T zQQCyk=9D(2w3(`C!`YozX$wmBZB1!AO50G{RvW$D#L`CFQ__dO+8NAe zN>bR}DeX*YS4z8>Grf(tn?@?>L9~FeTmmPw7xfHsY5?Qaa2yhZ`OtXvC4)-;CCG;Y-I* zI-Sz7mUNuq@rEZDo@jWI;mLwVoI>eTBkYlcMD;fR3}cQm98Kv=BhI39HKj3>E~a!g zrE@9i{9l*v)Z6nY>C;|HdJ915e7$o~;zGlV1ohB1mEvD!%yE>)8*!;7$^290FIQTL zD=1w_=_(y-3f42? zqFyp#-TzPN6~k94y+%nF|Fz4>VV+acM*x)GGJM-`n&CT!?+WV1QI&b$@B>5J0#vds zK&6ir|B2fjjg3`~ppHcdS%I}nZrJPgxjk0!2O2YZ07;7l~Y2EuTN`H4a|4{l@ndMp9 zoH9y?VtF>oD^Q-D@?v&6hvA%*=c3%7azD!RQJ$OfJi^zhRC(TlFtPa!7tl*j4taWB zUXb!4lm}2=nDRn>B)j_1i<;!XUM(}SxZx6%m!v$H@=}zSr@S=f-YMDDOvkWy%{T61xHbJcci=%<-IBIY^S>vsg&&#aAo`WTX}bLcn`{Zn#^8>jM4j0 z-na0!qqsliQz#!m`54Lvn#@6zE$o*M?#LWU`Eav2lJa2%Q&Igng7T3@9A$X4@{0gf zK2~X!u_2&rLqPci$`=32Ct1?TedI0vmrtX7Hs#YT^$f#NhNBHN{+lOfQ65v!#y`jK z+&-MKl%J%0KIL0X{sPJuQXWV7BFdK-=i**rI~`B?Ix})9Wg8UAm)q$ThF2P1Wq7sW zHHOy;in`I)Q@)w<4MtBW_>^xn;}a?0)GOIZx|Q;Sly9SaH|5(+><-Fz88L~n#{a@{ zft1_vpYmkN7W~Wii45iY4KpgfiGL&{gNhbcc|gvI~zV}(5B$1TSvI=MVW zc{=5%DZfGa8OpCve%7>}Gkm_I^#WxJ{$&gP<(CV-$-GMWb;_?P=YL#!lkx|Y-=h4! z<@h$`X-2$bTJIXZ*H^_jAF5+|Nq$86V{-=hY8EX7jF)ij7l&h4#G|8_FXHf2@ z{I$^*|H~TxDSv0E@xRbD0f(~1|FXsZvc>eq>a|1JryQE` zKrPFBtQ;w!rHCmfg(T(FIGHA?KRr}dr#zGL4_(LJuOFH#|43yy%0=`2L}e}$``Pdp z!(R<$2>9KIKMen*0_DHV!r!{!pvM29{BN7C%px33tysR5*;Jr1yP*aD%AAFOar#l| zGGcB+9R;Y&OJzPI<~Llxu)pDgh64;W{!>|4P!G*<5#uasIMC1ror(qj$`Zy|(r_t3 zBbGK?hKj|1vtyj)sSKjBGL^v{$rY%qXh|y-9LsT)PU;XUt6J)6eNxw;vKN&#scb=I zEh;0ZtW9Md6_8Q8vM!b3RECXCbG`N;-j>n$Ph~^HjS9sAscdZWn;33t0-I6U zysfVGx1_SGrEX=oHI;3s>_}x>D%(@pu2<4hcj%biiOSAJ5|v$gWvJ|CV!JCxjqhPO z>JVV3dsBIr%05&sp|UTP11xnvD*LNIG3lxtNaYkN2T?hk%E43)rJ@5tCv_y1!wR~? zIfBYjX6ML4jEcs8D%RyH8vm&rXK2B{a)Qw(8lGfm@xPt>sZ`FRavGJ3>I4Vz28BgT~ zDwk5ZipphFuCQEm2q-L2(ILQ?S5vu`$~EmIb?G`P*Y`>aL1hA!$y9Enax;~QR4n*+ zJfU(6l}S`?HEXvS-fnn@V6Po2cT%~_tle#B@xSf!y;L5ga-Yg;ZQO4H4-~porcjw$ zn4+TbpUT6A7XK@c8vU5zmFKCv(2;-91YR}2;5m5=*K zeoEy_DxXoAZW-AS(5@W41yC)u{}q)PCLo`omQ#)Y9fRLdagF&sm2N5}qn%Ew#(z_+ zbU0Ni4dc|P)ce?J7Lum!nSf7aCY69nMkS;YQ;GV>BvjH~b<@g=Qz|`0UdH@^ip2k) zjBfjE#(y@>FH|h}SAOd?Mdc6NhpGIDE0@w=x)4V1tOO@xNndAnp>li{Z-pkJV>eYf0Rtab^9-)?WUTUlw;Q+~sgr!CfBLLcKc( zcQEb>Z3~4RE!|4EEBDE32=3~*8vo518v@$JSp#>?K9XzW4#U+U0C!!(p}nbgx}M?s zxWjQb=$kL@M!5Upj=e_MW}iRt_w_wYV4N8%ofYXgC+@!u462*N~lW4LeNK92hm?i0Ar z;ud9p%4$G|AzTao@@}Bg8vl)W-tYxO9RlR#L0pUfuEu}dR}C%xyRR1likkE$?psE@ zjr#%aG@~{Cii_!ajzTnX~O+o{C=zf9&&IaM*UW=a1T|6i)JP(?dNAt0rw&ZYv@*_ETj98~8t zVlKmeROjxsqeiOpQe94~y*eM&`Kb;xdI7`!RCWGu^Z=?08L_aT#s8|tf2unF?>gMB zyXs=bS=?|5L!19smonP=Ky?|TZT{cZTHZK=3VZ_(r@A%O;Z!%Jx`FXGG~9^l#zu_L zHGGxdL{JZT=vLj#IGa=5(ugfO{H+SYnA=d@#fWXGZbx-TqqjHQp<{C=IW^AC9nP*) z_o2EQ)jf^BJJmf@#(Xf&UWR*j)x&z_sU9I5(>jXku~aqwQ?=mV=4gk16M}Aa?IFst-RK>{)sE(m}9@VqW$T?K);jiUo{#g94p5G_a3#pE$dJ)x2Oy%Oj zrqSd2(3euZtXIoYub_G*)$6EUMfDo0SNEn;y;kX>T>sVf4OAykeU9plR3E20k?JI> zH<_uM4R0~LmFn$OZ&P(S&iRJw9R*>jcT#RnXtwbQ$)-ebgMk?bROpE2*J`hYUq zcBU9}D%D4fc!=u5y;@WsHRfZ5u+dK_tqu1iRg3>si~m)P|H!w3&8*SSQ=gsc3)H0Y zU!=A;)t9JtQ+=80yHqv)o0ts&)z_%LZl`Y;zG-OjzxuY&b~=r!#(xbyn%8?&ryHR| z0M!quTKunC{I6R4uYO`lpBjE<__?4SZ6h)Sd};iz3}+aAZKzd8^;^U51daHd%(?i{Y<^vj1P?E&f;k5V~XGuMY7y)qgtlztm=F(=`fVYO_(B zPngtZr#6QXa~j%mQ>~xTa~sZMIIo}{MQzvSr?!Cc`x`DuZ4qh%)T`P;h6@{Z74nLj zv?#TKCa>|oNTRj`wJoSENo^HsODSKyTAJE2Ml5S+Lr-maYAaG3WTpliu22|JRQoF# zu3Rvw4WTxa+Nx$@HN({n*Dzeua4kV2)~2?O5$h_aUCd#|Se&9&PNsGMwIiq-Gr*^R6A%=$v z8ZnaEVI5k>f{p`6Qaj27H2xcL47Fpaok;CC%jI~(6AF1n&HAMFsb+TywNp*e#@X8G zMxS9g%5b#dnSw@~Rp?SXo7#`m&Y|`(wR5RGOzk{scTgKk?J8;-|EXPIc%k7%)GnoV zu{m&w;W)$bg+WF2?J{b%_@nd{)UFiWwtyPEn%XtgCQ`fBgs&@-s9kSa+(2!D@o#La zv~Au*?Pe3u_-_KYQq%ZP?e>CW^dzN~c_+2IjJVtI9%>Izn{0~r8s2Akzo4qLb9s>3 zl;V`yRB8{klhoiN)ZU`@D76>N;A7MtH{uDyCk-wB*Pb@|8EVf_d$!j;wdaN3K2?KK zIWL){&Hrl}|EXEC%g8qj3~l~zl}63tf6d~5P2<0*WYlsadJJb8{vcT7 zORW(5$@o7T{-UW`ieIVyX2kE*{-vhzpPEkosr_a6x8Xm6s#5fj`YhB@t@^A5llp9h z0QEVj&rjXrf8FALy&v^?sB8T1$h6}>bsaT?Nqqt8i&O7UePJ`ZAoT%8EYwGPt{xvX?`BY3dWGFGKwx>dR6eOx@yteR&feq>@vI8@&ScO{uR) zeFN$%QD2k#%G6h-zKW#|QOW(ERn%N;2&mf-P+z0qQ(uevQ0i-&z&ahtb(N5>2GxgA zU*D3}>u@yRj;_xCEp;R6BaGPC(BgmF!e++VociuYY(afXA&lONy2gL%+ZbB>uWv_v zXX@Kq?mHOn*vZa@04a_-wu|Ae)OS;BRz~W3n4LY9qh|M_uJNDxK8E`m?q|5a;Q@vk z|MgI_2kSHX`XSWEc8$E8`k~ZEQXfP8FzTbJA5Q&P;~!yoq~TH2HU3jSMvaWr_(}aZ z>Ss_tp8829a{~1f`=p+1GN%}xYIvIA>4Jp?I~`S=Qa{s9&+1L3eztMWQI2MJF7@*Y z+Oo6wU$^*QzmWR1)Gwlb74?g$UrGHE>Q|W9IO^j~{Zhlr3@!d!DcYVCwB~ZP30za~ zsb6QO*Bjm-sE1bCjnotB6RCGozlr*5)NiK#81-AIKS=#n>i1B;&9rVeyu)yk;hlyW z|GUn8hWg!t#+ht*ui<^2)cdJFP|zLD6zWq=M&m#AhYcSwd{nSw?Q!ZdrGJ9DWbve> zK4tiHADL&3^IRX!3+9rB6zVS-zHDgmzy4|;$=9h*r~Zb?ze)W=>Tj9k+lJE&b^cHN zT|pCj&+vWf9~2x*{mAfR!%qx9HT+D_R%aWMj_LY{Kn+JHT;hH z_o^uCAzH~6{Ocvtvfy8@80}JzsN4L%UZd{G$Hb`DsW&Xu;(xuR_U%(<)P3UzhG8GR z#{Z5?O8qwz$f)OCM?6Qphq?v%`b<0hf%=csWu?n%UKCa4XH(JmPyJW5W~tPFH_ji_ z|EB&Y^}pJCuH@BVmHdZ>MD>4lpJ8Jb8gtNqhOGP_MZ>m$%C5zREdC#*29-IdYBlCE z?5Dei8XEs;%wssOp#^_ap|OB)bfadYKaB-x*k}J613JuwJ46?aMND^5!-0m287?lU z8x%E{C24LqOk0UQ0Ma(^$uFT^j3|%uvH&eYDo6F}!`M@*C1PlEy|f z4yG}J#?CaP2wR)hCNwssu{jNm|N3xN%eV!NEsIkcTPg8h(l#`)cW0laYxjblyVIK$%&PcS^u@Fc;mvA@zd znTEyxhQ@#4D5`xM0;X?9W0akaHnjNPIE%&@6-$P9B~N$VUZrskjY%}lr7@Alc{Hx3 zF_y;VG%Wr%H2$0Vg@zZ=xY&qG496LcH?;WQ(D<+akWx3UFuc<6D&;@$zR}khUTbLa zzi~Z{8)<0#r!hgW>sjrtdSpw|xJfp3(70K*b|`TRja!Yl&G2@^I|NnUkj9-fH2%}L z+wdMul8wR2xtB&l<31YS&=70WX*@vVO&Skc>J%Ce)0ogc{g!-Bu&^_mI1Zuo{^ zA!DaD1T<_2XiPKCJBIHXzDJ{|;SXqhO2g*=4W0kfuwTHa&pHICL1lhs__>~H(ietb z(wJeySNemqc1gchLjL8{_?AXM<2w`h-mu%y;(x>9f5YN`qhfs5uxeN{tQ$5An}(VT z4UdK|MAtb(^iYn*e;ScttVwcQBw`X&|D=(1U9=~S+){fCXVUmVWn_PT<45BZ&16GE z<7eYo{BP)$g8XG(@pr>N1a&{Za{i*Z0gb?@wv@98%{ORnO7nD@o6+2r=H^`oOTo8L85P*la4VWycR1V7+_pn+M{|1<*ny^a zyQ6-;uDO$-3JB`yF2yO$-Ar4d>rU({hY2HNhKAJbvyq)GPDyfCN)$q2i)LxSQr= znil^}(zNdFXx&e9D$NIsY4N`~rARW}hiE=r*fD`eXg*5wu{Nij?-P2e{ya(ZDI=by z`K%GoXp;J%W$fhmg3>DgBF&eKc-in3!&e16k{bWJt}A-on>2r?X~DnwHqB|8Bztn2 z@6h~_=DRe%qWK=p&uCiwZ+<}Y6Ph2=lurJU3dYZ+Se(pr?(e6$A8nx9sGS_??39*5j$VhbuQE!$d%Ru`>>^;GtdC}$C+ z<&drWt%04R-(1_J&txjt=tu^d)%?^JpJ6)UBI!0LhSGR}K8fKjJ4A&Qw z;uyUFtu1M7s2nZDMzls4u`#X9X>HQsZ%S)3rQ2FtC@puLZLO_nZQY@_p|x!v$?a*K zLTd+FN7LGo*8a41l2lqd8}4GbtKn{jyBqEyXvChh_M)|q(R(XXi?eTs*stTy0VZ&u z;X$-4$hUL|pmm6$4gs`Aw%>wj9d4%@|BX13)=>rB5je*9$I{aHZ}joBEdIAN{u}2c z!;?EcoZ8`^M(cD-I>T^Ohdey@27Ps;nK7&GnvcrR;49Lx6rzhR?)YwqGj>Fb&bhfYj~aE^@cYX zP7rLr6Q@~Eq;-?=Z&tqa0qy^{((-BDM(Z_Nx6^uv)*ZC&rZq`tCapUS@6ri|tSTty z9$NPsF`3rAwC>ZSPtNO_a)++hwH~mf2MwnfXKL4^OI1cwAEqU4JVNUUT92B{W3(Rc zdcL0uh!M5_WJma^_8LX&8CoyX67?5pJxA+#6%hZYh@UUCd#@_KBw1*Z(yti4s;8Ro z>$JY3^#-laXuV16BU*3KdY{(Yw5GMS9+1;_XuV78y{-@T?&I?Zv_35CD7KyanARt> zK2^>|d+Jx*REkgQds+=z-Lxtq zL(8F6qE%LTTVFM%ORJ`n_Ey#G2vL{Q4&78jbz6pB*VC#_E5MtJR!HkNS`n?EXvMU0 zT8X8mv@#+3=9_3v;7;0?rE2(Jro;esiMw+Np81>nC@dyC;MfoGHd-d^M_ zS;*imjW-By8PnB||Klx(x4fo`dr~1&hvN;#Tgj4Ez*|w1%nshlLg1}}H$<6s5lJt? zTMhqpyw&k~@YcYah_@!*ad>Ot?TWWH-Zpsa;BAPvF5U)sL$xiuVY-9jx_$80!&_f> zYk0#8j-tHjsWKbkZGkreZ&SRD@#N!g`lVm>M{fDO&G0tYo@w)TA@H`;6*+G!ysecf zuMbPAthRaE;_ZaD9iDyvVN9gA44$;bjykQ9Lw5FhQWd*s-;n)>vTN~>8}W9-I}~qs zy#4U@z}v@MlGfP^Z|~w=Ki%bW_&B_MRdLii=EMGY2dI;BEA1VKcQD>TI{lWhsTfkd zL)!Nj-blQo@eac~3eR2#^Nzsl^X9J>opqwxQO@yr7vi0OcP8G6 zc&Fi=gm*$o{#)pSG*E8=?*`qGC=RIB1haW#$L39VAK=}LCoO&p z-W0rB@h0QlhBpaM_kWsuwgpuC`JH%oTcPgi&t7w>*cy-yu5H}D>i86Dn( z+FnXb#d`$rA-spXqzg&KisYCG?@_!bO!qOo$JJYFXhp4`r|@3Gdm8UWyl3#9v#$HB zmO^Xzc_|>?3u;R0Tu@bB5(4jKyjSpERY}Q9T+$vT7us8RZ{WSDm3*V_y|h06Hl983 z^`_zJ^Iy$f<=-=d?-!?ncpu_b@IJ!(67OTY&+tCM`?Q^lER<>1pW}TYJppgJDrytx zd<^d^yzlU4;2BfAl|_E<8_VKbwV+q!_jujvt`g3UI_;cdVRb2Jzn=CT;bK@_FKM(%=`19h=rzKVU z8(QiD`2Ce5r(#+1@(18AioX#4BKQl75&SN7Rbtn{1B;4e*!5 zUj=_D{N?eN#$OI!EPt&<_Lo(82`ojs`-AXT)C%_pn;R==7V7OvMZxh`F6sw=2>x35 ztKzSzQ$b&bfYtHWC}y5oMwyaHw~=VmI@OQ&M6n}U8 z1Mv62-v@tB6W$BoX8uxd#T(!LzE<1&;qU*ykQ#$7)i$ zx-P&UkAETlMdGtQ*Y+>AUU~`sI8oQ>f%v0sbSeI2swh3V-N&xLzYqUP{2TDE!oL>( zYW!=oT+);6o*Mr;{Oh|W9^B`ent*>3zVytA>aA?UKCB_m;NOgYC;lz?x8vW6f7}1o z&mH)av_<4Hk=^fSi!*oO--E9Mfj%A6l1|3IS4$x!6-jLZsnW;sAHaVE|3UnRyGBa~ zn}Rba0rc6l^3lh)$C-9%c7voP`wLGQ5>a9K)#eY_(h2oEl zO8)csFXO*p{pUsem-OpQ;~(f6w_H~?4gVD}i~lPAYg#TbF14zc=NklP;lD{B&G#05 z6aQ`eFYra>L;QE}-@|`bRm4y2d++1hpTBG%Gao*}{|sLW`zih>y1`r9=xe>i)X&fH zr>nZi%b`AeiSOWlh5rry4167t^`aKkR{j>h8~;12z3;Vdi@{w8O)cTO_+|Wxc0X-s z8~gk!eoci{Mu!0WhT4==t-}`nzxW=$T&g~Pj3215x~Jaa(F87(lR4F;msDocSC<7s1v9ix8|#uqeUO1Oo|{AXtoG zag9r&E6z*Z21^nwrLj(mV+IMt;PM2^5-g{=$kie98ENHU5W!&OjNO%B1)WR=D-x`v zS4vUUYHbyQp#(z+)+Sh$U^VqnB5klbfyl2xu%^!5WezW^xN=2Hsup=2f_2q%v14sP zFpOX$g7pa2m+Px|A%b8y!3G2y{!h&ZBM5AtXRtBBCIp+Rhf)?XrMCl;wY&oSHNh5E zge?iS(qdZe5o|+nIKj3AdlGC%unWQV1Us764n;2|*hw$aU}tq$szU2liob`+>}E}@ z-+#~$ZDtAfBG{K;Z-RX^)`=TZ&sux?5ga5I2=*s9fZ)LYEyckEhZ5+=-wG9ikpze7 z6n6lHfRkqX>=_3j{}-4>kiVI;313!SMtqYWEIKP_M*oS!2{nklfE8 zIECPJf>X6WYZpCDTS0UU2}Ti&F5c;|)HBr|*|89eA$W)2Y=XN9&LOyr;9Pjj`coxWS4!L5&MvCL6&-bwGk=aFY%+T1B@I+)i*S zfyIBR5b6Kw+Z_aV5lj-F3GBW`lEi-dy10ixtW74EN^md10|fUG+^^T8xGh;oJP95o zn4O$f+q;) zkZ$&T+Zm}bZORu3UQ*xWWy9cQyXs#d_}}?|@H)X;1aAV)7cZAv*rSPre#ZwM*`-x7SMHdXg~f)YVDflmJ05#Vw$Sk{;zvtqf^4_tz}6}d`K zYYz%KGz_!~Y!bu-ErNi+Bk*-DC(TieH9<%asXtP1IrQ>R2r_E|3wjz$bAld~7nejv zz50O=f*%R~B#_hJ2!0~?SxX@@TKT^a*aae%RsMH^KQy&ij|3t`h>#^+V~q1 zZltGXq{x?WW5P`ccOcwUlQiGW2sbC(%4mHAK)7WQ*$B5L+>US?!fn+z%SBOTw%3}G zo)hj!xCh}*#@v~3H$q+imnC;XeFUJh`e!u>^(@Bl+y|1We24<;N*sEhxWbZCcvScjvJ04&EN3C|!rituE@qY3pUh42_l zI@a(w!sAt4-P1<^9r`3CRQMFaQ#;m9BRst=)3!f~@EpR?gl7?+*_%W-hVbmdLL1eT z-USez*N3C)|AZG1+WLQZky=oWz5-yxIKq1g#}i&pXwQE`TmKKGXI^OnSE!0Qug`yt zxZ3a+XyERP9)Sv1|5}~2yY?0xsT+nedyZ>?;*T{@GinhgckgZ zMr>En-No)WQ6Ze%$?HBsTgeIUCzL+$FyVuQQ%z<{AL9>oI;q!!2Sh>ufA$+zi@ITJHK=?ADT=*{)mOIv7A$+yhpd=B#PWTSt8-#BYzDfAj z|5($qOzY^rOZWlddxY=*e=;9-WIiVRlJFBbCDb8+@H0(P;&a03Mtq^1Vq6HnGR_Rb z?+H6|@9-PKZ;k(*N*3i(3*Cf{a+EF^mb)Ib;Hey!uu3F>qDB}H);p37!e)nV5qhTR z7aR)|A>m(y5n*mgv0-AUF^W*f0wa0|i`-`t{vaG<{-}h;*q;c0C$u3zwSFNiw0dKs#sJ{{O5zViBWiFtb@swE5a6pH@kP`Ck(5Q=O2}@eUa8aUx9ht?9vv~V@jFu!? z&NxdEE!~k>hG!uq7{h-cVt#jLWY}YC8AY`RxbGM>W%afu+AT%)rc~p z)rqboT7zgKqBV&&BwCATIMLcf>!@UL-9_sX4J8_;b8q>^X|$f!s;uxt>+4QDxgU>o zu;}eYx_dSnL39|=#zZ5DHX+)bXj7sch&Cg#$RBM^v<1 z+9LqTLi5^@Xg8vrOlD`pT?CETwd>NM1ubTY_Aut2LJjP9l=VJ^Aw2jv+d> z=q;T-bG!*y@Yk$QR68;*M<)}VqO|&KLx9YXRp4}@bBWF%8bdUS=uD!~g_x!4^WUQO zh|V_7Im&6u4B#Oe{`8CUQTpHyA)zs z<`vOZM4u8}O>_s*HAJ@(T}yNm(RD-`>WQv5Yd089C~O*kV#mJ5f1+Ci_0Uq=_kW_> z`*0=^JwtRS(St;H5#3L8H_<&E3zN;ly+rrvujr&V$|~X&&k{YL7P2KRbqdkrL{o_# zwNq)Yhlw8PD%*7}&w%7F57A>P-|pm35Q!&GDo5RWN(s5x+o@vwRifvJUM6~;sQvvP zlYG(ezfpkb71h;py+-sN(d$HS5xrqzZx%^i&r6BkHqJDnca3IO) z1SF>YWQv{mAN|r%`He`UJ&|0+7XN!kwCFFQ_V{IHE&j)|5L47`+d@1W@dCuN6VFXN zhnkADpAgSQtiiuM@es%2dGu71<|Uqwc>bbX%9LA@xIgj2mTE&lJb>7OzoeeG4{=vV z*W!P?D6z(WVh#T7`iYky*4RsI-8f!~SmQtOGKL!eiI*c@op^cT743A8;b7tw+Rn%v zK3<7<2yr|96R#pN+II1(N~n?5lqeb{UW0f|W3JUnUAssnUYF!F;-Ms>JB;{9;`N9v zP{->N4>v7~|7vqX;*B~MMp)9uhMO4bEdcRm#G4zjg`g2z66>I#$73rJZ$rEn@wS$< z9kGS_czfa`tVZ=ueAFijxQve}U{wU%}#77ffOneOS zDB@#@PbEH%_(bC4iEZUaR(ND^k?SHpiTD(q*u*ERhhjul$Ytz~PZOH>bmBAgMq6%g zI>+Uqv4#{c%rAwHLQEb)2Dk+(nOs*lenzL59=<&6E+6faV` zcuyz3gm?n+IO3~_#}i8_E+xLK_gfHpKNw#@EPsBtB|cG953eS^j`$klYjthG<^yK= zdg2?@xZGAqxX@DENPH{tMB6R_KDw6G3{M%74jX2rxCwH{2uYUZI@K${azX34~c&!{)qT1;*W`^6MsT%VL$$~ zPbog{jYY&?SdR7=0L^*^agA8Iu8tbS-*mG6j<`bnJ#n{Yr};X>`W3h$cj9uvwPnhl8~;*?nb|4y7}u_c#nd3jVletJXBk4ynjAU+-{v`8|%&WrUVKSc?nZKjEK--68L6QN5jEOBovM|XC zBwZv+kSs#7s9qqlvnbJiE`=gl%y99dfFw(jEJw1G*|(=oiS7SMbpMa4Nc2dSx70zV zIJi(WdPR~|NLC`T;4d3viWzS*gk&uejsGO8ndIt)7RegM)FGh5S({`XUFcR}83KkD zv@TU8>uE713?}Q73@6#h=nV|*VS%cQAlcM(E&eAO|3#oclFdm@AlZUsB*~V_RF$nr zwkFw|WE&Ex8IAwO-;QMa!YlK6N0Qx)Z{a1;+9275WY^xBG0yHJdzk#5hI{p~un)<8 zB>Re3;S$OIB!`mNppYCWBehvL$nap2Lkf;!v09QGMsfs+#eXqkot)%IlA}nDHLasb zj#2yV3bb2;MCbn<;S-fs&rdQundB6bQ;XC>jO27uVV*%cm}C^m$0Vak9wa%FKBLvlXJ*(B$YoI`T1>e`sD<6SaVPdglv3rH>`vEVNP#WGpB~;ba2IT_iV>+(t5yK3`LBpc*ELfjOma8LeI)mgOzy+HSM8_~jsGP2{Wo<$<)@Im zLNb-)8Ip%c9wT{}cZ|GB@*2rIB(IaaMe+v8o4uZ!wYN#8wYAJ`l6OfyAbF4EeJzFfV=j?= zNb*tPNyqt5NF>mGO5%}xMp7dAoa7sl=_Fr~d_nT%f0ngoW{}v`CmC6}NWLZcUSvqV z>*Uf+;%KU~x*l4tGD(f3Vqz{yRdfH(LY<^Z(kKiHlC;_as_T>dKoXFoBq2#m5@|;5 z%Gb$%C*O>uha@jf71gVmO33|Y@*~NwB*JM2f0Ca`Z00Xj)NbqFOhpHR!Ys+3qytI* zBAu7yZ_?RG{vn0rUs4?%RIKnMot4yre^D;+Je`BIAE^*?6*7f9>D;9AwB0rfr1Oz3 zL^?m|f}{(O_HSD@&r-D-?Dr_=1jta8u0lFQ!VBrD8f27M z&2V)?-33ItCaKN;i-4A{L%J#Hx}+PB4kcaRyc$Njp1L8&_o>d}(&0KY)N*Y|I)Zeg zwv$=}3;wAEf02LZB+|_aUDC~!kmoPymZTc$Nw*^1THG*tn+~y^inWrlGGx9dXyPFn$+Tdu?CwSM|vWu{`|{QPf&Ha z^-iTiPA-_nkuG;C>D8pCk&Yuho%BMJmmy#j=~&Xyr00>INqRQvS)^lhJQ5$|kl{Ez zhxA-^RjSJz>*R7i=>`9BWXpsWTt@-Yiw!U76m5K`GHnScz06WCH@t%MO46%@Rv9_u zflGP~>0PAPlHNvo9jVUzNv~HKxob!#D50Di&Ao}FH+48V3XtAHdTYCGiz!NaJLw&y z?f6f6r(WPv#$s_ey_@tNQ=Dvgui<@yy1Q5nKEO`_>4Wr0=bu8p3F%a_66r%^a%ntF z+9G{~^kdRTNnav;j8v-PandLBjZwK*N~KYr(mNFSRjB;Qyr_Q z14>j$8>BT-`;n7Wh#VrL#cAq)x3y+Gvbjio(qBlWIWp2vC-!MX8mos|S2F*vTa%@F zm#V!tCzTfLA)Tq!)z0?^(jT>b<(OzcjY@wa{aJOzj{Isf{gq52&u^p>*ncOr5B{fr z$WvF+KXt0Fgns`=mtWFp zKe8^exyc5Q%|oVp{>kPoUVk8)pUgJ@%TD{Ov-v+;P#^n>+bX$`p}hhyR?IGfybGV% zD*&20kZds%Se$H$_A3?ApXCLUY$>v3$(ANtrr6Kl$#FTd<@NquUXi%?TCzc8gS#GD zs*oXDk?bt8mB@A{TbXP#vQ@~2kqseRhip}{wdJ8RnLhs|TU~>2wg%ancDk0d0ic2$GEtWXZNC+lg!kvK@=3z`C_S zotN5^5B`gaE&-A4TC68%E6Zw3wg=gfWP6ewLbey#{$zWT?WdE9OyfV1JLK+9C;|7xo3^PyxK_Q^(SE?Q}alO3U{QdhDARxW|;D6*5ujwU;fOiF#M zuFuHJw&JatJ)Z0&vJX6NLfqM8Hv~NS_n&xtAQNv`nb&cB6s$IJMBu$k9 ziZim~CA*940kXTz=X=QRBb!WiZ#%4sGg2*Docq-=ZJ-Cqrl^OyomgEZdx-2cvWLl@ zBYT8QTIx}<$F#gE|G4I*&OD*cDCa4%XUU#c%X+GNm{mr$Gs&*A?0K@6$X+0mTlktT z*~uE6_R^QhUL|{_(9(($b=hZ|y-xN8*&Af2~eNX1t1!Zpmh}+hy$;xB_Sw&YWGS{$bSTn4XHOU$pcH|{Hd5 z318w8nWtM}GhfgoL-GM+5!r8KG1(7f30Y2-O5C&1m#GnZ@rta+I5Rt^Ka%}yoFbO~ z)Q*H2Ie#JhwXh&evfs&PBm09)-}xf5SHQBr3VE`B$Y(MBzwIcRL#~e})OpEWRPx!$ z=Ov$mydU|TA`4VE8d?5K^2dnM+#L z`5^MaDkkp+S}9C;Me>!%S2cQN@>NtojST6O)V}}FF4r35>yfWXzK+SPWw^FV=2r9h zy5vL2hp7?qt*x~_`9|dW@dxq^$T!r~q7mDbIl_|kwM{GLrsUs|Z$^GQ`R3#|l5e4r zA>WexDDthy_aon$e0%M>`8MQsQ;^&IUur-lcOc)xQg>kp$Sv~chg#A|LG$Nu z@+0($Yg<0D!#|pQEcr3yr;r~@uCsme2SOWxV}Q$&XReDcf5FCZUBej)kAIhuZNBBDO8^~=4XlqT-)WVuJ-$e4x{6Dw(e|`)3 zt%VHvZS6Rg%N6l0`6SEtPV%qG?;?MN{BH6`$?qYTiTz~q`^oPmzfZM_(NJdE`2*w+ zwqvzCF_D;@PbGgyvycsY`NQP4{v)TwZ-dlFS7u)_Q@=wS= zC;ycEGnJHSydk;0{8f}fGy0PJEAkndDoxz(54QMU^jjIMwU)l8XLj;#@|fHqZ<3eD zYobM7Ca;iJWw0Q3b;yvRS+q1s+-s<18F7T8-nPgia*y2alq;~(g(@ZkoM2lwA^)8` zB^Nsxc@KGBBq?fz%q0JT{70=Ku`iy>d@ujW^8J}y>cN(Pig8(;`K?pBKj?w{Px61r z|0;4M*Ehnf_Wq@3mbNqIi5l#gm7dwuJ;_B%(K81<3(zwsJ@e5s7d`XP(~q9HO-qJp z``>!cyu~G;Hhbo8)6&U%`qQ&CJqyyaC_Mwr_(H0vxh!nhMb9G2d2GcFf1vRfqi1pL z5-Pa_JxkKFl$tF%N!!9QmbxrG%h9uf(aX~_$b23wr+O3@a?grdX=-X^eiT!yF!L6A zhR{=@XH|O6r)M>KcB5x?dbXfv4SI&rvnD<3(6bgjYikpWx}Z!Ode)_9sLb*7R1WDa zJ?qi45k2eEGh8{+F?u%8DUD3kdN$Nvsxl+!*_@t@>DiQ?|3}qVKwVN?-S$3%y9^G& z-QC^Y-7UBe?iv`}T>}j65ZpC51lQmaxa}@)@9I0r|Gw3$SAW%2=jV z?l)LfX9ozCUag#KV6ZL*Yhtjrx*~(M^lHd@9nAoX?0Oh%gu(h4Y@oN?ojcg@f1`=P z#u#wr_kMN42}3kD!(eX=HpgIR47R{vYYeu;U@Mg!?e;~>YTID2y?VuiZJh|)4STjy z+71}(h`~-nj~&9^1%o{>*cF4_Bna6_aQ^(2k-7?lt0e;KyWU=l!Oa+u;_gG01obUs=G&V zRq*b`;J*G@Bf-G~7`%!Bg?bVLl6n+_hcS3W+=+RJ|1k`n;Q4V3`YPa-fZ5d{caAs) zPhs!^22W$~JOcg@Am)u6S<{Uu%5rQCgK_{#_e!O-D_e>wR3!e1W#R`5w= zP53LqUj;rDyRz_838cf>B!5--tMxwMNUaWk4LQH-8^B)+{^s!4hQEmn=dS~QUHBV2 z7VE)Z-wCyWyKm_38}ZJ!!#i6me^br;_?xNW=qK^~E#Pk{m*8NZ;_&>7zcu{b;co+f zd-&VJ->$cyGDwyk;P1@*@Toct3VKQ5??Tw{cZKibKhs%@MQsoGd%@pR*{Ej~+#9|^ zlgcu(`8*M(xCDPc_@~0(AO6ws4}gC-`~%@12LB-VhrmC$&+pW7sEW8!Ea*~>fPWNI z;E#guI{%cK^!Zkva18w8;U5eCIKkj6USfR${FC6HsBE-?^nbETcm03rNB(dc{Bz-- z4*zWUXTW#ozxsn|{#o#y?Wi|VI|qIr{HK%2B>Q>rFNS|U{0n4LDn!{Xgs&g}l1){E z=!cgw-Qm2~?4*1u>zZw4Z@Na_8CV<3m z6eIe-oYQ?`!oLN+zV-m$MRMOQ0T0>TuDIln(G0U5?u1V~cfr3~TH;n=5xfWfz3}f7 zH3kjpgi+Lg0KS|2(X;#fh5s=8M-=EN7iYB2xE20m@SlUv3{S#;9R3rcNmRVE_3@vA z|8(Ep!GFeae^yo)TJw4MufTr+{)N{`?=xqto+QzV zW(q%($=G}db`HOQuaEyLKW9i}yBfhl@EZhE!fz2w1iwQtJ^~NHI0zse28LjSdZ$zu zvGIW&fM8q!3&s;E?hFqmKro^7z(FPP?E5i-i4jbOU=jqAiX$r*QITUXIf5zrXWi-H z!BhxlK`=FfX;>D)NMUBZ2&P3aqbo8Ug6R>=AOI(1!yS6TOsXJ)H?urbbXayS1hXQT zZCH1L*&WC^5U?S0=L$)IL#JSF1oM$Qf_V_kE1`HX!?E)t;I#mP1;xt&c9a)Juo{9z z5G;#eQ3OjOSPa1u2o{%U91b%xEhX?vAy`@khmiDJzz)N52v$U}JOa1)%S0ArunJZ} zu(F<6Tv}blWnOh`@zoJ*fM5*->mpba!8!=mQg>0BUt5@akm9=@g7wveQTdKLf(;RD zf?y*A8~4ZSRM}kKhml zJ0RE#!Hx)aN3atD_wfh!fgJ?9AlMbbZjy)^aCZcIAlOq8iDa1~@OvXT5W!y&?B}H3 z2f@BVPJ_BU2=+(dzW=~P#--pO1P804@hyiZqHrjJqus+{2o6VZ6jxpl9D!gI0(bJ4 zOH1VFP&scr2ElRUj^J2%7i&jwJc3gYoPgjY1Scx2k$4~Q1Fb2`v8iEc>@);dBRCzw zxd_fca5jQ75u7EHu~!qg_|HBP>xIakgJ86Z(+a|Q9)imdoR8ol1Q&>=5-*f;L|H%n zh~N?gmr8u+GtP@HM{tGyWg-Jza3zAP6fQU_l&!Bpa2tYa5!{5}Is`W$xPB<9YQc>| z<%|B!2yPJ=I)FJ_Pp< z$AJBT&EP=J3uu z{av1qmscMyDp;9UeCAb1Y}`~PmgF1=3i>O%zVh&l`mRt&ZQ6Td|82?F== ze`)M9W`|)>INgd7K5&TE_Wk+`qIQSF6K;lq9;#9o|5Yz}l1QmkFQH~Ml z3l9hqcTW*yYMX-G-3xgURn#{<|JAm1)gWkHkudP}nIj&M_idn4Qo;f@G5N4O2bEf8)gQ_>B>t%QoM6}nbH58EPi-~S;6#-eb0 zci%ytskb{J+!f)@2zL<+vgX~*s36=8;qD0cl;eea$mND0-7JvMlG@=2_d$3N!hI3$ zk8nR#DCaf^4{&-o@c$q`7~vs(jbI|eLlJ87UkcH`M<6@~;V6Vhv*U_TLjZ(F4IvSj zI3A1ec;~~%Q3^roTkY^fgtsF+3E{;EPeyny!c!2QiSSf}XDD)pr;!fA)1@4eq7_8^ zEQF(-6H*UnBRogn%40C0X85g}zNUxgA-uq4K3}{zz6dWws9iwHKvMGIOAua*kX)`p zcp1Vg5nk@n-R6Hv$DF)movRUEBRVYZI#dX+LwGa7>m7?5-2Fy`H>r*5ZJ|1K3&Ot( zIfuF-r+}!3+lFoI#1IloF(ighA$;0}GWVl+;WG%IMfjW~ zb$-G-!WR&}f$&9yuONI0;mcZ0rtE!ZBYYL%>j+;PdD+=YWWR`>BNzQA!gmqAiSQk# z#<$%4ZBf2xZgG@2?;-pM;rj?bBr1d-2%Dg~1>bY`cSSx%_$k6q^okc7_mH0K_J8&j zN^#>$L<=GO3K65?*9ZfI-yr-6AuHhb2>*@nyJ4N>fKj^o0pX8B3-+CX@Mna7BK!rR zoB2`A{S6^wh}-|k?M8z4hrsiabOVHL=O^93IUB+dVTF*yQ-m=>MSf|XT2i>CP^E@Q zVUDnniniaquVPN38exa9L8#!b)~b&Zk%wpmA_#M2T0LRGehr0sh{i=UBckyTO^s-L zM3W+#0MUf1_#{F{jV3}gF(S1HGEHBjqsb6Wg=lh(jG`$JY4Ts}`cf=NNu!a7rb9Fh zBDep)Z|;R*dPFnG=iTui=^>g4(cFj_|7Sxqi%5y@Ul7fzXX=X9jAlnPhb+$Oz={^l ziD)jpunXfZ@f zBU&8M62m4wTGDY`N~MO}mqD~LqGb`SfM_{H8VHD>8zUoH5z$KGLTu#jRwdK|Myn!P z-NAFe|40i)Yam)1(V8O5-cGcZ^hqMFnjl&i(Kd+IL$n#9^$~51Xam)qXhTG9uC>>O zYw;0n;y`Yy;?mFNh_()ZvB@S zq{*ETx%f{b%2>NPTkNLVDx>Uy=qN;cB03P!UWoQVv^S!^%9`9t$0F=~Mf)N;z-8Xg zf!|-e*vQg{h4Uaphaox`k&FL=dZ;Q9^KkcXbU30T5gj2zh}|eTD!-LS-3rXnh)zOu z45H%^9qWj@DIiMChABD$k^BA+VGz%#ZxNl0=x>NlL3BEzQx*K9)8sm%0G1J^CXDUFF;H;xDe3~h%Q3(G@^?U-HC{=u0=#f zS0K6!(dCk>?+LK?8(oR$Dp6yixL=Lv8a)qHeI26P5nYey7DP87x(Shf|6Lx!wH}$~ zW;vMj;3j{fTM@bSU*;iAWf+6#4pE~M4*mZwM2{l68_`3E?m^@xe4=}`KpfpC8Cg(B z9zdi+F1i>AqlXc>`5$h9BY4Kx=rKf3AfiPcR|+Q&sRtS8Nks1ZKTLEm5IuwFEkw^E zdKJ-gh+ahWJfasgD@7|0C4C8zX8r||OOVkkWBI;@=nW^}>q?O=7+&5KPD-I{%GIW6A^ky%xefUg zo*wZ`h-W}NquL7!$c`f0%6MkPu4@!?Q2#IW=okd(1MzH#=R`a^;yL=>nj(o<%q5|C zNx*p!FOGO##0w#w5Apos%brQRfP73u78E0CU}40I=&ceL?bm7%FDA5ly9DB;5if~& zDgG;V)TAU`2Jy0brrVPvBS5@7; zyKv*x5w9UH72h=xuY-6k#B2BXm6K!{#Nu`Pt}Np95pRTe1H@WVltP@P5O0ila|dY? z#G4{^Uw$JOUc&F100$EBR)}{*OxD{W-Ujius=1s2V6!U>+aum#C=M-4w~Ti}yes0J z5$~d*y;G56v>W2xr5`Gg7yU5a6Y+6~_dUih4=_ZXB6TiHMhx4Xk(TgZZMW-9)tK; z;h|2bG^HGm_*BFvAU+APYXYO#cygo_Ys@<-y+jvNe%k!yDK za5>^D5nnMhA`4Qt($Ce1Z$^9#;+qg(i}-rh0>sy;E~wNEh;Nj=*q7-0R1}s%399@4 zvmUtrpY`rG#CIXS9r2xr$2h6oCqU^lghY0#9d{$X53&0MD8CdM-zzShfMQocKJx(L zhY*k5OUYI;ei-pT5I^GBJ&IUA{wV3_65Q}Wn)3fA5Wk7|NyIN9ehTsPh@VFM9O7r3 zhdev-%oo&f_ez#TFCczVCZo=oD84Tvehu*}h+mbMY_i?&XE_mGNBoBK5Vr(CSw!J2 z#GfI48!;{W4&wI^zbi=8x!%5y_=BE4;t$1w7uWdWj}U)~SWCc&KT)FFS)`nb51%9c zH{vf4e~tJ{m-3YwTwXjw9e<;2a@TKFQ&dO3L;Mrs??;Z_7V!^=f0Q=3SO57ts1rRi z|6y|>{sr-`ND1jTq~jp|9SPn0KS=oM4>~~l2byBywfT4sw(Ft@ ze}cF|oFXnx~b}Frm9oq&z(7kW7MPdL)w~nF`5dNTx(GIg%-)E6!SwuRBcP zicF1U8uu`gcL7VLMKYa0@*oCtau;GU1Cm*g%;=tHLNc?`+1cZrtx571B(ouzRg~`? z>GI6(GLY09Naj@4AV_u|lDUy=gk&Bh%OjZ=$s$PRbNS~-vJjF5)C4CBDtPju4MzR=^rI0M{s4anHN#$f$u%9etW~pKsB+DvAWeI+{;mMJNc-BI)B9c{+ ztc1jU3p(Mi0NgK^W@gF08j>}Utj;1x*63mAEB&IMREj^%aM#iat4wk zk(`8t#yTF!(MXPQEaavG9TkesSgy}ZhKx}Jv| z&qQ(#pOKt}JD9-SfaE45H;N8xx5Q!M&5rmj zYc6v+clq6bx> zUOe2DdKigXv0*7$_Aw+sBl!oCkC8l%RpNS;ITjHB@E*s{d% zJd#(Dyny6IMH1B}9RWb{vgF!kb|m}>_}P0I)h;BjBY6kO8%W+pqTk3s@+OkEq$th{ z^>-E&s&|omfaE;~<9$_0dIIZDWBwr)>6v-DzK11?(@0KI) zKEM_E63JK6wxhrzNWMYx9g=U64E<9=$$`H|@{<$!2Pf>0!_eoPAIUFB5+uJO@sa$7 z11j?(n)1U+9jPF=@g6Q~B zF{JY$T^Q;7NEbq?_^+dLscQlhD8_RI7eTt{kPC6LbxRjVs>qLY3AOdqVY(EFBVF3v z`SCZlO^+&~rpqB+$t5n2lo?i(qy+5T59!KCS3|lA(pANpIOR?%i*$9_LNwPzx;N6b zkZz51ZKR~R4$}49t93<}e+gTqD8;5oH%7Y2$h+Rt5k-y`mA)C$E!@NA zLqAX5p-5K$bSsr*-AuPZx--&kk?w$WJEUrqMVWV2z;s8X{FMFd%G_6I+xWBM0zmNgOtcp zbbC4pnF_$6NDo7Lxc=2!dIjBV6w+gn9*Oj5q&kl&C38z>s_*>tH4f=EDo^iS#VxWMJv-CAo&J0MgM& zFF<-OGax+=>G{1rm7mp3i5DWh2 zVg0%T>D`Xbok;IeI#tbHeR>bld-ZQ`cWH*C9zps5(ubU)T#sdFk%xPNNa?qaBYg}h zr&aG4P8OHRoLsPnO!A6X zkiLoZRiwQ>UsDZL`Wr}H=ilL>+L6A6^c`3H?Op_=?;?Hgzxs5V`2g9~NIyij5z>Dl zn*r%ZNMocQBmD{KCrH0U`YF=Sk$xr&l*l!6NWbX+Mfw%e?~s0t^xuxxH%PygfUXXX z&GWr`^#esf`lH;2Jse^F8R?%$e?h9I9ORMhhWgj(7kTD3S$VMQgk{hHs(qgRkN@utVX)UsSODDH%k#>%e3)Gp149HCK z60N%<8wc6=$i_uBo^sNTOlR3_0%Q{ovkg-wMm7zyNsvv2Y*J*C>Fr$$A=CU1vMG>F zDe3sd7+%y#HZ`)5y<$a^BhYMGWSr4e6+kxqkR79LHY2hnkj;c_USu;Po6TjI1=(Ma z&8loHJ}fmmvbm7Wfo#scjT^S4+1$wHQN8H#vyYw4hinmK^CMeO%E=bcEAb`Zg+-7K zcE8$6WQ)4=#gHxD=NU%SY)NEmAzKRBipZ8mwj8o$kS!}bbOS1xcFdMXHuT}K2v{ds%hA8wzWQg&Qt&L2*ePrt(TNl}SdP|UfKOr02jApL? z&z?ZGF|q@YZGvojWSb&WuO8WE$Tml&h921#y)4MKLbkQyBuVk267-g{K)i1^HqQ>o z`0tJ`aVKQEBHJ0+EIt<-X{u4b-WKSV;>%V%XNP_HHWN#pQ4%th{6#tREfK0(( zES&hrUPksBvR9D3>iDXo;>xNa=oumVC$e{uy@~8?N8~Muz&=>^j&mw%xHq>O0%Y&I z;vXRU5Sg1Vr4iY-N{Ww>1;{=@_9L=Sk$sKqGh|;P`y843{wJpFt6lLDS*79>mUq{Ya0OcdV5^jS$j3(x z4SRK2jd8wIG;Ovq;u=6q(o zB{k|N|BEz6E9A2wpC35^%;oaTfqd-wFV=;8ZshYR5antGkk30DA<{*Kc>&}LBVQ2t zLXx-lUT0tAiwyOjFNS;-cUGV2Cj*jzjC_CO2Z)y>IuJR(|1+L*RCgC6aybIS`BR>QADacQAXipWqp=nO?f&2>J8KFGhX` z@=K84i2PFIS0KL(xm*A3_a?E2oL`CjTI5;+Mt(K&YqU7R8RPx{Lhe?z^6Qb`phSws zOZD+4m;Ywux4DN~kpCUIi~k(#aEXd@;9Qi+Z$~~x|8ipgRU)|)`6I~hLQW0ejr<!P`l|Ad@}f8EwcDd!i5`PV)L`R~a8M9wPqhZbd6gg8ZHfZW%Jl{C4=%Cm=g zh+-b(5sHbC$0$7H3Gxzoio8Is6)WVqC~#?>cgGQVg}g)VJ_nRH$Xn5Oizd#L)A3&v zKrtQ)LoqIj5nACY#!)tIZRIknGb@VmQA{8sa_ytw5rBW882b}oR7Eifis?~IiehRM zlcAVgnxws`x?&0xQ=*tkb%(tyUc_09L@~|KVFZ9jz%mrmsR-j(F$0R(P|S#elxK1& zGt0Q#S|EaM#h(lD#jJvNu&UR!1=(iltG^ zk75ZF3!qpSh5PtVv5@2)rCnzz7D2HXibZuUrau}}^hdzlu7hGp6idk{Buga=#xf{Y zM6oOie)-4kEGnGUB*+S)NgpUyLa}mR3dJgNo?=xLt7$fgd`V4w*Fdo$iZxNJhhi-e zXWc2*MzIcxb(M`N&TuH!N3nrYxLiexsO&~4Hb=2Bip?~fFE&B3sSwg98PiB#P%{); z2qB%Y*b2qdD7Hp%A&PBK?1y4o6g#8X4#f^m$y^I|r&Eg^QS7AJM{4Ayvb&(z3&pM| z_CT?lKA=?WE=K)M02y~r;gpB$jbdLX#a~hEBN$Fnz2$z|Vt*9Jqc{M?;V2G7aWD$E z;?JLjl|+Z2ICOXhq&Q5%vW6=C2o%Sm7=_|!6i1>sYPdeg)nvUr2F0G@YCMVJDbZxTmUW&%@gs_7QGAHvITUZ9 zcpk-TC|*GEDvB3Tyo}-{RSHs5MSew}j$x(dopuxjI@_Bl-cZF9NNu=MV?>Fh&$m&$ zi$dE$iQH-OJrwWjUn)eZaI3)FhgQ%zzee#9iqBB+U$^+{%!=Yu=}O-FIf}0w*)QC` z{dp^GgmaX?LGc}mZ&A44|0Q6z7LVe46hBA=9=T=W0du1G2}OhAXA}X7Ur_vx;#U;E zDL+w>n*4<3_(O`~rn}-#XUzc$zxPAYk-b6`844;PMG;HGvP+^UO(N_qNCP>F8byJk zLQ$#-pl14}hY!r7$kU>n07Zw=P!4g${>(uK-!dCJu}a?n<=!YaM7aY>%C!Z`jZtoj za+Be{bXjCGCy1N;XF;CUEVo3tjWhICj*)&BULs4++oIeK<@Ulxv+~Y5Snh~&XOufh zjqF#5?=C2JN4YD?-IR?Llg=Yq_E6uT+!N(qD%;~^=e+zY%EM6ZgYpoR`=UG$<$fbi zzaQoPC=VD`UT)Z?PU!rlngEms53L{(cm$Yni4TXPJQn2PeDoKr=mOy`*(lxqPjZ);Mw2qibH~zW|NkxJspSDmqLMCl^GUfoPJqP#_!X(Of3 z&|^^EhVphHVT9xve*wNjVMiJ6M0pp=yG6WrDmlQtD2e$#lux3hCLcrj07}>YFCRqd zoRf`?az5hjj}CRkP+wA<$K?!U$IUb46TJ_hdE99@Cd|ey8*xYdYge$@fDBna$+22C>KFYUIzK8N1 zF*=vt^{$#!Zs6p<()I@^KXQydbne91;@Xr_8$?llg7VY;(2$7-fnw5gj(ZO36^>qD-NfN7zbtuTZuq zYm|+MP@h9m9V)L!r6QEBGF0QE8i9%vLH|HC4ytiQ%5l`4Rjir-)x@YK6y<6nb;!w) zcRH|ACPg&^s>x7IiE46GQ!r5;()Zk|sZdRWYHIm;HL{1HdRk2@{MB@*rXM0CFXfpL zmFu-uGwEDIH8U!=|DPh$?$xZQW)o{V!;t$Ns8&TaC#t1T&4p@VRCA-6AJsgR8r8h0 z<`denns*{EfNDWhuJhkFWT$L_Y7taRqFNNy;;0sr#aW7X5m`d@#lds(E{$qARLh`R zR@I7%Wj02_YI#&Ep<2P^S@FLdQLQX(NY$%|h#po$wGpb-QLTe&4OD9?N=Ul3+csn$icfwsa{>!Dg-1D}3$&#mm$hSGqjZH$WeH$k;IDt-SM)n;PEX%LFQ2L{+` zOH^Cw1QT0BseNk)avNok1-CK9gb=TRC}S?5!G&}c0#o)s+}E|U6@nd58kOv zmD(NEo~ZT^3nsFX(xa5VH>yKW(Ub?G+6UEsE^%KeiW?fM{ZSntz9iBcg`J#AUx7w- zu*U3qI26@kdUkqqIynN>ai~V2IvUlHsE*Pgi0oV(Lv;+QV}*hG8NIDzcRZ>SQJo-c zP6?<^LUoF^-B#}W?|*yU)oG}1LUlT-OHiGG>U>mZqB;lFS&k0P>dqhaGBOBMqaB`e zQJp7=TqSY_x&W0s@LOHzGZvYAbp@&`9cC8^saWFVCj9Ce zRM(@rRvqc;I%$9_iPGu~y)3BQ79iEin^E0^>K0UYqWU|kJ5b$<>UIZ@N5GuvRiVZR z3F%M-dDLB~?$%qXi@qdhxEIx9sP04ckYad6{Xc-}!9Kz$n=JA$sz)7+M|8}JXh~Dy zg4g5fB#=1mbtxU@Ni?h-Pobv5pGG|ys%KFBfa+OP@1uGS6)`-I>Sa_fpn3__i*kP1 zeLN{syk0@|2C7#byVp>?EG)lyzD=w? zK=lQx4^e%Jik0OPzD4yBs*i^gFC@$Ssx_aX`h3`MFj3NdiRwF4U!nS1+^GsF@EcS# zsGI+hf4Wh>)cCzRa(eg?Rfg&(R6eSoQT>MM7gX*$QQQg4P%HqyqjH=7mH!VHWB)`o zkOPwugPRxysA5zhDkuBj-q9TywzFGjVSlGVcms3%6P_%8wLiIkH&|LaLOHH~^w zr91tgo*eaBsHZ@^0O~1G&y0F1)YGA!8uds4V86PaM(}F4`G;nu)#~X{&xCpg$8<*7 znl3?GlMC%q&w_eR)WkfiWKqg&?mj!}ImDXgbN-BaF4X$q1M0b%j(Q$G%gGs9YqbKX zbrQ-wEQoqJ)C-|r6!pR)tGA2vZiad>)XSn?9Q9JDmq5LwtlUp@DBIGgdH&b+d7S5n zyI3rbdKJ_wpk5jEijLq)BFLU3@5ISCT(64SegB8*(!Z;tUIX=-qDH73p3v^~+Ni0Y zbx?1KdR^2Tpk5EP3;xVTsE0j>dPCHk%0=sqP;ZP{C%>ewp~f~ty@k`j=HkoR>M9QE ztx#`++6_@jhjVE4wy3v9&Bfn;tE{Bk0rg%4jCx1ZJGqCQgquv+wA*lC5eE{nHm5ufl!2=z~gHY>Nz$60WfHZk1>cjfh zO_|w)s*gZ@Eb39HkCZ_<#lfLLeH7}WQ6D4e=;16b(;tWWMCV|~qjvG1qLD0jlFKDd zM*SV?Q&2yO`c%|cqCO4v#i&n5eJ<)VP@nA}or(G^)b6V$y@^%!9D$M5MvwI0br0vE zz7X~K&Z{qw>`nuyFVeI77xg8mFGqbT>dSbp?i zf%;BSU>;u5@ZG5IQ3?T5KOE_^xvB3%&C2+I5~gvzs@?GLa85-2pl5SkD-1O zHQBw0`f=1xp?(7OlX}bMfOob~HRJztsGo7>cve#Mf^dLbKkvkOVK}cR#cS%cNUk?f|5Ga?^k)WAIlx<}zd-#qYU=PE)ZF>QZ0|}Z0?!QZqy7N( zhr&;vId3Yb?T=7@hMKZ`(o2f^Q!(X`fp?kXbG04vr7ux`gZeAfUyFhS-%G7|&5KIY z&%w*4ie}%VnFjR_Xn>j_F-H9p>H+GXQU8wm7u3J0Ct15+foFJk?H%g>I4*yn{!>V( zH(rw6M;!yDBf7IqDL1p(4CE999fkD@jcnweFE zDejJjiF2Zv70n!IW)l%nn_XX{BD^8-xzH%`_bF)RK{GF!`Q*&pSjdZQO|t-+#n3E> zW??i7NkwEKJd2=NR660wO4cLB;bw6(OQTr=%~EKVlr6}J8EAANTn5duIyuEo_)x~> z(FAB#Kyw+I718X0W+gP6qgffv25446vo4xd(X1gCYF48Upjlm>Ant3TannA{S`v*m zZPw{!bkFOdSzmHFqd1*!h-MQs8==`)kO+X*;TWXZ6wPKDA2Bo2g>wruJE7SU&30(E zaw+=w1Db8nZ0l&wF1e)4?a{a|Kd|C7>T`+$XOEkm(d>q17c{#nCk@0tHjyxlG`p)Z z>S0ebC!yI3%^_&^MzbH9zoOX}jhp{>QGG0z{m~qZ<^bn=2cqH3&v$yIknUomkQ|EU z7&M2W8KuhAa2M!5&>SI16jMSSiRLIYN6S*IhC@k@MRQzF1kLeIq7%@ZsJGIOYaN=C z(VU0o6f|d|ITg+6Xik$GvsXY23~S99$}bFOp&5-v-EuT%qdBLiFr4&eU2fbdV7)yb z&4tb=7YGj*(3^|UTuP{DE=J=%G(^$pX+z6ij^-saSD<+i&6Q|wL30(F>(N||<{Gtb zbTE;<7LA+3WGUI}1{GKOjc9H{bF=U;g?GLEJDM?QZbfsutE9IL-%>QW*&S$f)C zXzoJe=6_sA)LG$PG^`i*_4E}sn+JNbyrX#t%~NO|M)Me&N6@&*pT4z~AxQIaX^f^3 zwkMo*p47h=eSqd^G|!=V2F0YBH1DG!B*OSmcA z2o2wU?4Qu0VIE;2EIb`Gn%i_e22!J|B_FBi^eShIN8yBkLD*Q z`wygs=Evb2DQODxFKGTm^DCO)oEuQXzq@QS4cC7^6L;Pv(EyDv2OwFtL1Gl5-5E`U zmccDXJ1Lq3?Fcj}nidV=m1uHN5Z^)tDGmn(O@*dL)2MzC2Ct);*r9dvKg`eBl@@4S zY-bT_uN?>NL}Cuwi3}{{FpY2yWlPuNFjMh#5FsF+l zXlF$`+fdk6+X&Ilfp$)5kHF8|`Xn=RvzD+Ii6~fObB#I@qY1PQLWOc0sfY zNg~>}UD(OKi2RTjBVM~0+NIGhj&>>4rgjOmOZI_UcM=h{WzeqbiZ6?HIkavVC~EFJ zNbCClEk6PAFSIMW`zk#<-ARG%X1hAtEzz!lb_29)qFo2=T58TjL~Q|m9__lW?0RU| zclcRZ#^VFp4bg6nb|bW#I7@9T*;Q~;w3{iG_GdY{Bck0xr1(~)wnDot+O5%Uqx$IL zjFWvkv^yyjw3K}Zv^x%Yu@sHS?uwjY7qn-i-4*RIXm>+PY`de~AMGA!HMf9vPqcfX z-CF{()W4n_`4xrQ$MM}4?S4w+lpw)y7N|V{?SVsJ?A>vTNP95a!_Xdrw*UBp({_EfYd zOBLLj)t(|e4Ez0zZhJb~v(TP_)_uo-uQ+qgIRq)qjh-0r+jG#~f_608tI?i|mMQ0< zz0k>iK3doRXXk-nq^^t5UX0cSf7*gf83)?S&|Zo5a*3cSbA>R_EtUT&SwvD?gZ4(W z*P^|_ai^cS{y%fF1)|Bm(nw6~(Y7wv6m??ijMD?SG89Yc#a zyP&;GtCQ{BXzx+2VFe^M)tdXz-Y=EXKpZQ{Zy!WUUJs$wT7c4>BcXj1?PI;(ddg@Y zH;}>;=FNomNp!U1Q|P8c`!w3$(LRIrOSI3T{Q&KAXkSMAJX%`(1@%&kz-SuhG(i-=KBF1iku~I&$rI zXunrZIvd?dk>N+Qzo7jI?a$I1D?6nVhF{VCrkw0ClD`0CL9fi^|^C)xn*0Ijb) zEW%hM?jc&|B%%f@4s^>p6BI$GoQ%8M?`x z##~FmGrBp@ z&4O+=bfh+`B3mzrh|ex|uKo@++|7k*htb2)g;uEugT|%`dI8l$b7v zZXtAT@~3Yi1!+-qOFF2Fp<5i?5!Dj;)uH!E z`dCM@yP(?$-B#!}Mz=XSO1BxhO?wUZ3U^B00^OGU$pG=?B^kFywG(n`gQo(EX0?M|8iS`w898TE$~s;KgX) z{fh3l9*G1OBZ?WI`vaYi&P@TSG7h8!0;4&|LRCQXKQ4c4-uUPebS=6RU4f3`=gP^R z74^e*yerXF$}gO?s~U}{^{cU6XWlsGdFG8U5A-zihLb09Kc^-0#x-xeo})Z)M>B5% z^QJIwLh~jyZzA(1?%$d>$9c^VOzH{DQPrOaTS8v+o?sBg`i*}RXUAf^RVY&-kj#mW!~I9cUkbT2hE#TvWv@nBVTKsEDM;ohzTKfdFz_DHaE_hw~kPeChz=#wr&1l-umWk zAVyTLSZrwCM&@m-6cTr=&D+$xz0KRqyzR}~+`O&L+rqppWt5?Dw^C+d*v7o=%-dG~ zk_&&il6P_0!Mr`p+tIw;&D+VmUCi5A2I95;rRMEw-fqh2i0FaWhW{~dPxJPYIK3Wr z_^Wxm4l!>Z^A0p`U-J$yPrv_So@)a7P7&vkr1OK!JJ=O;JtgHi)Vw3iJIuVpmEQL{ z#C?=`N1Jz~WZ8}WaFia{OLzT1^Nuy|R`ZTC?*j9VH}6dIPB8B@^G+m4^G-7FRP#&o{aZV?O~Z?cHLYi~Ll+a~Sh(Gw*rxZa42y^TwF>fO&VAcfWae zns<+RcbRwhu-8P1_Wq}N_nPOv{6@hUmzc;JAv|Q~x`hJyFsWue6DL#lqtRb5kKA80?=|yYGVfLMUe>FP z{%zhXGDJVYF7B_J_lB%S0Uc%Y-Zbxh^WHM=J@d2#Y~DNOz1#DW!uk6_9NoxgJ}~bi z^V9^G=PcC&pw)!x69Xg3rv^s0&&(sQ&&~VEyf4fnj4#dm)=BY|d0(6Njrx`ZKqSOT zMTzfs=IMBjdEe7~=KUZYx*@YG__KMxnfHr%ZvB^4o_wXQ-_29NH}5~@{UP15lms7` z7nnD82;j_NUZ}THCO_6T!o0-1#=O+L(mbi!yxcrD`A<~5MBjD(Zs+u{{ZJ<=#h%Sh z(!ac7XSs*#E*f?<9B$anu%BUf!(N6x4EzeTTRI^%8Dek4z6RG8$PoKTb}ENk(?xB6 z!y$$P42t;%%>o%*wW3f%iyvw@OwzFyQ=jsIBMc`PMj4Ja9BDYJw6qHGE4Qiu>6%f-ZWF z*|vt!{2q~i2f1M@uazt%x?9x^;?c-ZiWqBk+SUbo>f z!&8QT7@jaZF4ZyW60p?ERbbUYU83-e;Zwu2hBpk)8D2I#Z=jxEFubUoEJd4sMguSpfmz+lci@-Bv;w+(L^-covRHPz5}3?CWZHGE)r&+xwTGlQ$hh7S#n zj&mp3U5-JKKN)6|9zHYtX87Fjo#6|^*G@TK8om+{2gC3U^BcZ3{CfzD=_2*L;a9^C zhMx>SiYC*Q^Jl{^(gO$A{Y-@$UmJesZ#nRX+xZJX#@|*~&OiBkW6H@xsZMV_Q+^)W z^o`E3t!j@%K9ia;24-fH8*;W}hJvex+g3B1I)gx|U-VrIP~T(M*i~Hooa^ zJhKtPVB?sLtG5n(PsHV%z-%(J3C$)pn@EDNfg??u#LR8}`LA?C%2SxlWHzPQG-gwo zjWnCOU+9;K32FD!&89V*uIFVoy>w_Zn7QwNI+Lk~U^AP|X*P@5Y%;y66)>As^_q>^ zLEoCqZZ?N}gMjHUHkX;3#Nb9p<($XN_5W#ZcGzrwvo*~YFk8}WL9<277BX|+e;`M8 zs#%Y0QM1K_iW6e25w^J567o!P{415dl-aUoOPg{3k8>yLR>+q#Th(lNtsP5^E4aI6 z^37Iq_m$07A$>kOE}9TFTit98(dlg}z-yUpXtuW5dS>gGt*bFYZ$WWc-)sXpyneV% z+|4#J+sbTXvn|awG26_M-Bd-ydULZal#@lAT?9a-wl>>FDFom9hHYo|mf7}Zmz(Wi zcDxyd-N$Svv%SoAHrvx|7qi{WwEsu+k2=6?ce6c)_0+sy5YAPaiCP@{&s&P5nC) z9OLfCnjNQ+EE5kt#_R;M^UO{(JJswYvy=7JT#oPT6z4OppJ1n%oojZwV|s?!Xfyo| zn%P%idc8%G!;zGX_lIxv{ZZNx1e#qV$$x1~xo86)m zhsTT_eyiDSL(8&_U~kRFnB8M`huPg`cS>n;yt@?tX++YI4(~O)PYUTRE6NX;J!AHu z83lRBY^=x< zbBn)3LcTKYOJ*;-B5D!LUNw8&X>x26pz8UC8HIXN*%$$MP)^?UwpncUj@j2{@0xvN z_MX{?X78JQApKBMwlb_rf=Uf&#>R}b`!lmo%s%b)EEuD=HT&G`3#G7>l=G$8SNhk@ zj+%XA_8&8%{l)CxW`X1>{A88NPn&{+UwW5l4+MoeHMCbtn2+K5SP z#6&h?VvV?|M(0ivf5fEj{{NUd2dL?hrH}9al9^HL7SjQ&>_ePy6VIrE0+h}3)Vn_K7nt5 z6j{++9gIbAFTvOZ8xxE}upq&>1k)0XM=&XYiA+Q=0l|dwk4f28s#-BI!6Z^{L_0*8 zj9^NF$qA;=)xC{4>pt7*3Z^2MS~lCNJJ9}*oGfdnBbb$7dV-kC(niRoO1WT(^iiMWFZR%r( zU^xO`_6PdxjCaI}1S_dV>n1zo|5XUqAy}1QO*mlovs~r!!+vr=nxy5#{1Hq0O1!jg>rD)ulU{8Ww2=*Y@m0))#7E^#P z9o={*?nU6w|Jdwr;%fE21V<65Tp5S%@YyK?+Hxk^W zTI3mjt5^Bcm~SQU=YK3hOiC1ExQpOURcD8-!GgO9?h)>Rr!A4-KEejU{RE#8JV0Rf zJV@{a!9xU(5<;fj;b3H~Pdg5Z0CFA2UO_=>>u zzr~W}7F(YLmWaM9<|FA@Ya@am2!0{>kwBL`1bPLG;AdHGQU>MoUkQFUDT3b!{5Ft9 zrgB=j1w`-%!JlGQtN#*Wi;CbM!V1B^TH}Xf5RO^qd@HpG2?N4Vfl)NdMnPC5jJ+sQ zLa=@eYlL;Ru~<)<@~}xbH(^3JIbljT9$|}cK-ebC)e&KbuuGT~mX}b~^)wTOeK}Cb z2%(<#Bpi!yY{GHGX%*RFh>cL|wa`i@BAkG*c>c$;w^U6`I7zwA3~gnlS4ar`Pe3Z2 zf^bH{DG8?`oQlx$zrQqOOK6*M!fB=7x-XoLaC*WS)KUuuzfvQdiEwtpnF(hjoTZpY z2=zpe`a+!6(m4p{RF4bybYwoX3>nTtxGdqkgo_c*N4PNI{Dcb;>i#d`f(mRqtaj5Q zI~O5bRP8lYMwCw$CtQkf3Bo0H7s)C$UsumA6;d3{^B)-dKxpUBa~q*O3#fI`h1ovmW6_3cPTA z!VL&FEG#J#SE+duBC~l@D(4e!MkOXRh1U{pL3k|TmV|o}Zbi5Y;nsvZ5^h7dJ>j;5 z+i6a;p9T&g;SR#ryoGQlLkM@)=?O2ZYC z>f;H|Bs_ueRKgPp^)v|KN#$P=g`bi?v8oeKb9g%88TsXB8?M7WKzJ76*@Wjh!#M?= z@Vt^iZM=Z+O2P{XtzRy3wu@D2he|IcyljYHPIyIu3zqt?BD`9svgaBhC)nqVt|R=A z@Or{$32p4$MR+6O?SwZGn$DZWW{-17Wtr z_!;5-gbx!wK=`0IO`(Vn<J`G*yy(?oU9S_qAs!2@(m8KA!`p=K6TU7;DPlP`g41%KkBIH0D>I~d=?PWqcTFJ@5}@7l+}$TTs4j@M4aPNnT*PKR3@e} zK9vc*bb``Lm5B=e{I;0NBn3`oQkAOq$*D|3Wr`tvN|&9=?U`CUPpnF1S|?6NWqPp{ zj#9ldQkjp+OjPt_IF*^H%tB>$Dzj3Vt>m#&X!+EH9S}S6^GQSfS zpt7hV3p!kg%EFE;qS|kZ9bb&f5{@ihMqp)0JJn$kSXr9Nj#QSRvK|$)ZAB`}6{S>` zr?P_ZA}>`|qOukhYtHIMq_T=>qoT1!WwoNQRMw!fW`RranSH3N?ab>?SyvPfNP|?? zr(%hH11cLk!-iBg5<@Y>q<<4Cn~GAlcXKLRIp-D*w=7gq*_z6BRJL*Aw&E|cVr6?O zI}{!eQAX}WPL;#U(ONl@%E?rYqH?Tj@F}3;Q-Eqej>-v6 zKfaKqa-yG}WN@hY6e?#?IhD#8R8FIEx@3On5 zbzMMpO)3{s`H{*+RPLj4F_r6`=MpNHQn`l8WmK-9a=8@Rp-#Wj8Lo2Z`M>O=YYQGK z*Ga!Bx`B$4Je3=%+%zoJ6hP$`i9<g9ALeK5KIhVq*|eB+y9>Ytra#MR73F>38Y$;h*?sN zsg6yxMs+~7?&1vUgTl4)afS0;&^JosjB8`AyzCMfRvpLe(ztbEG*qXfI_+qhH3d+eL6p*@nW)Z9b!MuwQ=NtCtfR6M)!C$6{L24S=aiJp zn@jeKG7r`H9GO=|=Kt#aR2Ood1)RR1tQDv7e>nqI7p1xa)y1eTO?7dqOH$QDprcf~ zlyJ3Z8LG=s^&*Q;8w=ItOHR3cMXIY&U5V-{Mx?rO841F*1XVm&eNw2dq0>_NT2$|( zx;E8AsjfqHTdM0)-JI%ru4H|xp82aAP~Ffe8!4RZuxp3vCf+pVf2x}m3Z1eA)vcVk zr9roRYawFO6yQADQQed3_EdMFx&zgnymZI^4Xf(TxsM~K?@Dzys(Vn~y%6_K_cc{@ zFRBMP&)yFAp}H?s&-vB;#AeO3L;g9C>cLbGDm4@r7u7>lD#H$=dLh-rsh&ag2&yMg zJ(8+<_$aDJ7aCm2F;tH&YnRmVr8eOwQa#mGY5h<2WU8mAwCwTIsGeRj`_h-{nN-iE zdX|e=sGL(W|8KOONA-NF7Zh~byUsB>#5#E^#-aps>sHs)$Svd>docKqWib{FH?P;>MK-Vqxz~C3O(kfatOaMlzNNm=TzUO z`VrN4sD40I8HVb64&RqsOjZVbD5S(cruvC+jml3Ap{j8`Ed7G&cT~T0`d3sn3wZE+ z<74n!*7u|8%zBsQyO^CGtDf|5E)! zF=kCGefyUe{Y^B6BmWqk>c1+r#8^ao1W|=ZQvgwDP`Sd^&ykWpQ6!2T*6OH6)FY}B zb%`28EoW#FB~m4ZRESv{wTa5bzbH0MM42<^g(^i()F;w{pJ+g& zYNt$7oH{-o(QHK16U{{A`ClTMDZDK+6V2*uvnUH$t}vbQ&+J5V5t+erivBiI}q(ew4*pn4Lgs*U20dN-9)kQP;c%*bO6zwUbGj{zK-neP1~oi-`V!_ zAlzSJuV_3_8e~H`1rQxVbRE&5MCTA4Msxzv;Y7xHgtHwBd%N-IOLuB4Nw$S78 z?D^lrgXlz}Gl)(iI+f^TqEm)~zGjF{BRXBz;8Imk&h%Q&B05{d|F!*GqRWUZ>@Orb z-+3-5YgBYyM05$!#U-T}^3kP*2BOP}t|Gd^rLGi@Y4!<)=xU;Ch^{S(UPN>~(St-c z5Zz65Ba!)bxc-lB7H6sdR-)U8l=g{kAEkllP9k6byZuD>IK#a}_d9Z5*)B>1 zeMqF7PxKMd$3;9Vv^>IzY+!!nrJp+{J^#l`5ic#eN4CCxUoA;`J36rcHKk;Evr; z*I%W7HYVPLc+;Xf;?0ORAL3gmIE~Y8H^f^JZ|fSicIf$E?cGky(!9M8QFbIggm@?7 z{fKua-i>${XV|siG|v$4PVDRacn{(|-6wm=)mGh=7BADIaK3AuT%=4+uOMC(GSHu?*KSF#F z@$JMH6JJhz$x!N2;>!x$J$VK3HLmAM;;V?SR*|PE_u;j~=I!f7 zf2*a8pNEHIq4;Dj+KP3K0 z_8X7J<0r&l5`RkUIY0hP%w_Ao7=?R^`8Arq-o4 zF13tWpIYt=Ju!HUQ5#Sjo7xC9T?>>gHEV0*=(HFnweehPd}EcwQeRm)ggOkp*Dw? z&Pq-BpPDCstG)1cZB8f7MQv_J<}o-laz1KTQk$RJ{?rzrwg$BYshNg_s4Y%yVQPy~ z^Wb~i zuboQmw6cxTe+IR)T#qgRhOPF*D4pk0yNKF()GqK!&o3C9|H2{j#ndi$$|ck;m1dcD znHo|KA6)`?Tdtz^8nvsbJw)vqYPV9m)&;MlcC#bbJG_C~jnrWd4$@d z)SjaD7`4ZxO$~WMhz9tR@~67sX==}iXe~AKY*wm0N9{#w&wHuof17&b+n1=l;zXYU zM0vFol%ChAS?zC7`-Iw?)ZU|}{7>y|hwpgp@5*>{4`swG?Jo(F7BYs8gTUYfpwQmfO9)qP@zNhvRwI8VcsFu2`o%!dIO}70) z?H_8tQv2QY|K{*N1p~GJQu~vdCITI{3ab4@?eDT8uZ!Bh)S*6x1na)|Hv=rv>H+mC z^^kg{p*Fn8E9sF_8j1LxF_z^IQ!ePZfkQy-uDIC}D=J}&j~#B2}b*qdwiu(3UYRiA+R zgw!X}Lo9l@MIYX$J_+?Hs88znWYi}YeG7Z3ZLZ?^Tk2C%pGpsv*|GP{)Tg077xihq z-sz~%Nqu_ivuKe}*Q-p_XQV!pjNE?{>ND$6I(uYG^jWFTrr+7v)Lft4DZZIz>B5-R zin*z8MtvUYD^j1A`V!RVqrNEh`Mq=j>I+d{&~QDyEdGV5FQPVH_O}lEkfVr;QD3}x zJlHE*lDhSmehNulU$Jw<-U!pTv#2lU&>#NP=?Y@7Yr6VM)Hk5MGWB(+uR?t_XIoXJ zYRKx;_1iD%YYZuCQD0ljHe;~o_U$dg`ns|~%%cxbtV2i2BBkn3wd` zP(3>9koxA-cc;FE3vNk$2kKi<-_}pJrmpWRD#ywIeYw|_Y%gTRWvK5+eHZFG>2xIv z%bhjJigQ8Vxkov*Y50cxh zTg7<@^~0$9$KQ%)nCpj&S-tPyJQ0um|Lc0{M^it8`Z3f`r+%!<9;fOwK#r$=0`*g< zpGf^=Z_!D5lFCX8D36`$^wUK24?DPqGpS!n{Vd1NrhWnSbDYheB&?sOhXCv6%VT!f zGnsY&1%QYbdC|qx{h73~^fKz#QNLVO$m}Z|UP=8b>eo=e+D>)Im}?6}&}5DO>S?JL z(RCyBo1Di6i-r0v)E}UJEA@M*-$wmT>bFzBLosYUZnsG!v83Ef{eJ5A zNwZN5+98)dNc|D-*@wJ}hefw180(Kxe@wWWSFAs&KSBLT>d#Yuiu$wEpQf&-Kvl2D zk1mo;F8yh_7z%WE_&(Y;Rn59*fCexm*+^^d5(<*MGM z{=OscP=A;Dd+MgbW3uoAFZxgv8zZXvW9s_P7xhmZeoDO<*Pn~09HC!Q|ISPG|1aua zQ~!p##HGZ(DO#q2@2UUb3_q&KB2zW~?3AJ*zj!NtrT)7Uf1~cN*jVc}SxPq%>i?Bs z+3G*-KMU0VqW(9HF&+Phxya)(n$r^Tcw`uGnGe+58@ z|Nq_cWMev~`}@BQe{#DqBaNBLzH7`(V;241v`8T0pUn-MoyMXx=AbbTjX9k%m+P6k zv{qHjOJhMA^BLWXd6W5t5#QY#CWF{{v6m4@E@rJ=c?u#?6bMZGlE8gi~p zW1S(st|QjJ>(kgkVfNDH`C$*y*pS9XG>)OMF^wH*Y~p?4Q-Hc@Ge6y&#uhZTrm|u}6O7Ejmna>obhU>3h@IhsORi_NB3(Y<_(l6}@^ljRT4g(>bpEPvc;R_6g-P zXdLSJVKnsem!{(aitR`mN9Av{XdEq7Wh;)QaSDy&tO^>((>T$^PY{DuDyfrboUBt* zrPEVs+)v{)8h6q-oyKJ}tWr<)jWfMB&!XWA39DDZe=d!SXq-pm0zW-pJtbdVSRhWk z*x@BK{N-O0EM+gJaU+c@Xk6nASJJqOhCl!RKb~u8T<@jVl}{t9(sC}KaTASOY254# zw;0s1?tf_9M&k}A-Y&{en^W$haknG)s7TuGrQ!MCP8E0$IPpOmFVL_kdWy!wG@hXG z2#v?QX^%>g zjo)dQ+1m4=;afm#tmhm5(hO;8{V&eu zm^5`G!0|v==qA;y(5%s{4(Soixb$SP$KI@~$UNC>(wvfJLUU}IDa{_u7R?ULwivu! zuDRO?rTv?^ovv!r&T$SePG_?_=Lps+GQd+eZ&CO`8O>;dX(p-n8_Wuh@Xs%ClL#J<` zwo7&+nwx0d+uT^!utLgP03I8g)7*;Y7SbSXTMDu5k*4qecx=$zmgd1Ux1+f)&FyLK zMso+6yU^TmSm{nQcP=#O3c9(g@UkOzr@6@Tq7|o+-9_~^{h+hmxN`I-)p8=50V`=J{Pnz1AaO4Cb zCEH0f&!BlS&C_U}Li5yuM}1*D5|yJzVlx)oJaF~n%V`@I>g?S zvUN!FA`%;G7t?&5<|Q<5rFkjM>uFv_^Ga8HIn66Z(|HxmYiM3AiXFBe(!7@Db;64T zVtXmg8|;+kjSg?}7Tv7EB4c^}O?Xx`<_cNY5?j^FKq_t3o8 zPBo&X^M0BSI`V*siiC$~K1%ap)h>odingm%E`6NlD>R>=sofr$Ptx@Jzrvpur!+iE z^JSXPIm7cskJEgC=8L*|ZN6ksM1!TySA|H!YZk7Kyg~Cvns3tloaS3JKcM+G&39?O zQ*e4M@6jAS{8Q@rkme^eKce}uu9wXi(Hm~_P01J}!_6P#G1(*_sgZ zS`kU2sFt3VYE0T{f=QVNk}k=DBpJz!_N@q#$w+!6a6go90g$XsqO?y^KL6wRdgUCE zY(SzUPqHD&MkJd!zOg~I+78vY8OatTo0r7Wo-K!N*_t#W*@omEl5I)OA=!?^LTG!E zy-9W;*^OjJl3hr4BH6i+DpZkp{x5rQcdvR6l08TDJIP++R6y=SvcEIz>rhjGN6rBx z2a_B~a!{$c^z$Jkhl*5l4JbzNRp#SJoB4KX~VH3Cy*RRa=c`nsG*mf zs8f$dl9Nf!BsqoTbdpm^PAh}N`ANyY&-saY@(GfsUFu28T_jH_gPC%lQ=I-R$#W#n=imQ2TD>olyhHL5i4s1^ z%MM>L=rQmbi7oYCCwY_P4c${NI?gR8d0T9byVScR?>X{5$p`9FV=k7#$wwsrNAfYr z*Cd~id`|LdAxq*rVDhl%|Kv-OuT*5>#ab)*hU9x!`>n(83L8j%Ao+>pM==krBKdik zw|^n|i{w|5|B`tAPb@9i^FO}EGZEGJhh)`i&;N>|ze&e%%0DEU2y_@{Iwom_RO^4z zKPu0l8!|>F6r2$)^<6rFii(?b=|rS6kWNfG zCFvxjlao$L>QDX{j~#Y}l1?GS4z+hG(&8zyIy4gr)7jaY`Naxh49TuYL+@wp8&O^GeQAo|^`A8Qeou708@f6)E&V_VZ zy4~;pihohk#Yh)dkzI5Y4?LtxlCDC!6zOuLOS{@-NWDh0yfl7!(iOdEh2m<3bR|;V z4V0>~Lsu29TKryc>a&14eNEDXN!KFXnsjZ_%}LiG-H>!$Qe6v}64LcaH;^{3&K~I@ z-H3D(QcwQIqZVySx>>=mzAFveg47rPs&}ix9@1?{_axnxbZ64-NOy3nwwJ73zoa{o z?o{R(Q(}IQ>@K9clI}sen~D?+ngU9D6s3ES9zeP`>As}Y3locAe*vUPO8x>G?xv zUNA&_3Q)ZllU`1GiSu7ddRgg^LWy}#JXez5M0yqJ^`y%Gq}MpSc4*jj#^#h89D4pQ zmIvw0;*p5yxs~*`QhyN!J55S@2kD)(%=vfG8i(|5(oae6A$^VXUec#Y?<0MX^nU#u z%5D>+4`|0*$U~%$kv>fNsGmOK47Ul|O`r5}A8f%^Dd>Iceu!lq%Wx!yH@hL43fTLJfyFR)4uDHzE1ic=^IY8{hzm;=Pi}0 z(sxMT)#m*9tLTv6`_Axz!w*S68ghQ@6x;l-mOG{CXSB@z&q@D}^b69jNxw86XZy-iYelLY~*!`XKN7A32{*x%yWP`SQmi|KeC+V-G{~`TNL~E}>nfE(s zx%p4}NBJF|^eEE=*aPfag|5bC$)bm%NHKqhx&PT1m-lYR$>57OlP`ZHFCNU0RvIt_N>8?tZ)_~Snv_@Qs zTuN(f;dWSiTjSDNf!27mW}!7ct!ZgZKx+zG6VjU4nI{sb>Yaqvq=tCACUeT<+6*jq z2wPLqn%ap|iO2QRnnsAt5v}QH%}8tdqKMWEGEX{ZayYZ-cG!KZ)~vJ^q%|9@IlX9h zhjXZOwH;~AMQeUq)`ab5l(IQ$~3b79xif3zDJJZ_6tKQb(cC@yae!C~q+QBL2%$+1s z+#M^sV;5Sx(%PNYZlg@1wTJ86Qxs!X%tI*AzrzD)9Z2gS z>9jYXS$`T7a z>va3zk34)bty5^7=J=`Nw{L5#J`pYZ3g|>$`*(tZ z>JafpT94DZiPl}T>2?YGdn)m7a_>rS`-b|1obxaTd-H&qbI&buAnL+f5z_d9-{ z;zUIc(0as?2WdS->tT7xpE1aP+QaFOnl@UG$#t^x30luP{Yi&UIegmTGY+4n$F?6^$P&n`u;QRgmyYg!%#%`f4#KpFcX6v)~D?r?XjGw`@gjHiA&nL z1?=yv0d0`a^S;XO@v=?(^apzyc;gSxQGU!E1(_Y3Y z%N7*Jm#4i3ZT}ElTmOHjy^=vkR(7}w?Nx^wR&$Df1yok8Nqc>#tVMfmNBk2&QnD`X z_0%<{$|3CyoMA(U{#~H<#*S~|(0&19Qk&5(KZ~ati!T?ox1xO$?X79wNP8PS%GKVM z_KCE&qkS0d?P>2rdk5OP(B6^uPU?5t6>RS;r1%c1;$&CayV2g0_U^Rz$WMH^_*j!6 zwD+RDw?5Nk{C3zEO56JyLVG{j2h-l4_JMwSfOzch677RZPWw7mTR-CQQvd%;@d2pz z;k2#jSlUO@KAQGXN)cMOC{fTprunsy2gup9&#@0q(mq$8owP-)@bhV3PWu9vx{&rIv@aT3 zqFcbqe(g);D2wjJo!n0oCty0_E5osLy>2OSH%JL$A(-$naH+IQ1_iuOIUAEJFP?FX%OwD0q} z?x(H$zeUygQ#~g>O#4aNk7(W7ew6m(wEY*rcF|$R$igSgy$T_F{7)`=n)Y+FpP~J% z7_7*=XP>%iKTrDwQS1RfeIIW?`z1PK(6+#Mo%SoVU!(o1KC5WIV>4~m#daOheuMU# zg$A$dE!uC>{)+ZHw5{#$%K5TiUxB0jzH^#a{igu!k7$2J`(q{f_9qTMRn9k&BJ;OD zr~O57O8d*Ai1ydC|DgR1ZS$Vi3ADc(s{P)WY5zd`$06k>r~E7>#ZtEIj{voQ^d9Hx`FO5Fof7AYFi2GNdZPa(hq!Z~Q&7G>gHP;E`kWNUaqH9>| z>*7fa8_u1Wj{XR#rz<;kIxT%0xzljibeK3y4a&D>fSJ_k(3y!&m(B>Cj80FMbaM5h zkUkyD{2xoL9p;D5SahbQGd7*66bzkl=!{EeLOSE=LuXvw_#3qjy(cY)$KX6M82Ar&ir)d)2ZpSVD2nH zXL0*-CY=T8EJSA!It%A7JS>J69;UM>oyA6-y4oe^ELnVTkIqtbmZ7tB=`qV8on`6x zpC2s^nh!-;fzGLPR;05vot5aUNoQp`tI=77&Z^R571`J1WcliJ)+qbSi1NT%bT*{3 zHl20!T{s(S9l49ndTz=3bT*J%jM)zL??!aCa)yoRY(mHQH>Iq~t<5VwiL1#-n zyK4{7+E6`i9LY+jnR)=7ZRzYwXFEFk(AnOt+JVl_&afk$oea^TuHS{uu0z?~==e8~ zMc>1j{o~J_y@t&G{eKg*@70TEKRWyCsj9+qwe&zbC(${G&e3!Zmg{7a|MaADC>{Uq zW#@1w`qx1_M>>9#^jo{ce2i;8Rur8cN9Xt|No0d*4aLq^jwfS$i|DRIG>Jw{-VU?s_0xq=L$L()480E zzEAF*a;b;eWko#b`4+YJN;+5Rv*D&tL3lMC{{^trUQ6e?q2<@pxxwqYaY(tzPj9Ak z3!PgYDvSgt7^Q5&VzLBrE|YK>OKkD+OP9~nqX`OjbFw* zOy>nUkI;F_NA9C^9;5RFoyVoh4&&T)K{`(sI2|QeI?vG2V?T7Bl~?^!igcdW=o8U~ z?ay>x@`!qw&ewEaq4RFO_wjU0_BDNtx%0X~r@TSu%_064owvR8or2={dvrc?Z^uN6e{-GPv`Ijzq z$Dli=RtT0?EhMa8x`7ZojAHq-TcKMma4(JNHt5#q)-{%GbQgWsZPHEj<6TQBHqg2$ z-4@*m=(g#O(CyIGnt^VYZe}8MbB8^LeJLqs8G{xx-LdG7@BCxa9f$6?WvK+mE18|2 z?u2wFr#lf{{q2kH#B?Vq80bz~N?BVZI0fA)ONuzBqC2(IrzsVRXF9q|(4C&{Y;g#L(jhOdFZ8dXQw-dJZvMnJ15FP}crTy;QbmtLnp{vvR z=<07Tbmyn5Uk0mchjbTm`oeSemZrN5-R0@} zJ&x{js>s^wknRd}R~+rsz7p)e9qFz@cU8J;(_Kv?sJpuOg{(n$O(mS}TFN#?6uwS@ zIKz5$x1hVe-pJ@~;0A0+cVoI673Mi*6X9y3?eiGi%wcK2E7?+my}K3Nt>rY~md9Sz z|5m!&(LI9h_H_5By93>w>F!8(C%MQ2!k`tJbU1Lz(~_dvR~;QyHJL39t6h|T6U#Pq_5Ipi?9O8#0#`u9=k z9!d8yx<}DHj_%QPkJaaJyT{}QWRgNu?SW{t@-=DUP4& z@H7?K7Khl*pnIkvj-N&MY)AYTFh=}&54z{sU!m!qPxm6angZxvm_K)}4l_@u7t^(_ zxm17oG!bjgb7slqbg!a&1>GyltEXZG(!HAQH3|s@`L%TY=P$yqr+W+C8|Zq@@A@y` zINf^`y$aoX9p2~ge!34h@}R?q96oG6 z=A-+Fe$OZVM;$(9a7cN=DNoXU$`P%;=sx4{S%>=nmm|Jt>ApbsMc4UKp~3N2$ZQzC zN|w{LzWai%1^I_`-=O;*-8bplQhzSGZ+Vcv?a==Me4PIXUPbTI)z4ovM!eJMenj_E zx)w#BXl1330RP8h^)tGk`~Lz4qDb~jxm{y}dSnTc#>DLl5TUy9fm&t@f?gKRdk*+sWOWYDgNvpLE92NNP%jQQqyHV>KK zyR<}PnJ1f{Y!|Wx$TlKdkZftPg~%2qTbN8cKQhT$WPP12Mz)k2u()emf^12RYdcK8 zv599Hvh~T9C0kDJ62*S4J|J6xYz;E)|2R=wKxDrEldVFws$097!_~F0G&b44=8%6a z=U-d7F8dy(xy zwx`@;s*GP9y*JrG9zXk#?JGU%=>5p{AL0i%Ub|~2iWQUO*OLjQf zQDjGu>E|!%8tX^tKbq_qNm-cLl3NjYoK{5g^YLnqnQHtthh`^{ovd-~ZFh!K$u1x} zjqFUa)5*?Ik^TO_#HINxvh&E!mbh#_hwR+aNHf(2dv?CMOaXQw*;Qm0kzMJW7w4yZ zM0Sb8OC4TDcDdVjg|waGKP53GGV*G&+r7x&3&^e|yRMuov+K$HdLdKtC%ehv%?@vI zXk*i-*Uaz3isugRqdUp&CA*94Zm(`#vU_sNoL05LQ`R*|c0WA}{s+iEC3}$kWU`0I zEplG7U_AHr2?{j2tky)vE z<^{5slvlGCi;PP4GTAF-g7q9r_8Qq6WUq_piI?on(eSs)-XnXbppe;Dpgl87=lf(I z6e5D^dUN~7WS^6L;-}WM&*UO&xI?lpoc`r#l&{I_WZ#haO(NTS%=&{h$$lpLNxg4+6bxF;7N=ytlKoEh8<~m<27_e&v%Hf3Px1=cUu6G~DgUdBrAPT+ zNN)fA9aB=dOeGHrJ>;PnM5&U;&KZ?co}_9jwFu1ZwXvoeWv7o{X#4c+|PE0;6`6T3%lWRN3nI|h`op}oKDV;c#!>JukQ!=RD>By%arO-=fBwvwyCi3~o zXC|MMe3pWrd{);vo5R^1&M``sd@gd|4$9|oJ@Y!8uaI?o0rJJj7j%3f7hl++Uj8Cq zbTn0q+Yi*qmvH)$4wrJc^k_WGx}N16YSW2)1%m~HU2oghJ?w;hm4ZmVs%y|ri1nPq zHAdrKi+lsibk5_ME!UPB`Fal5AB}TE^3Cju)ae^L+{EFgqwy$V+M>bXmIj?+tAc@i z8(lZ$+mi21z8(2)UKKTVohWUl$H+s7+BEOjY zD)LL*&w2&S-dl5cxx*_QUTILSFenDS1xD`qKfl&-O#$ToE?9np;X}XOL~i$gKO(=y zq22#ATu+I3?YEQPQQ(4>wC#T@`Q7B^@O#Mb)$Ha@CclsTe)4C@E&o48Zu$Qa@`uPD zE_im<@n}Ocs>U3Lk_NJgWr6a!35@l+7)6ko?j0%hV-gJupp3eee zn33MBE;5tDnH|nj@YC~K0Aib+-W&zd8O)e@>CH`V9@%5zVbE6Bz4_?PFWh>+SQYmc zq_+yah3G9yZ((}+=P$iQ^tYycR-?BVy~XvXLKBgrme2~kw8()2tzyjX81`18x3b;B)8Do16&Sn4(_59^7WAx&HJo8}T}d5s1HCor zZBB13$JeH}AwA`P4X)n0^gRFfl>g~%Ai9N$aL@le&;LEo|2^e@dYg&IY%^%rvkHSP z>1|DKE48RtIQ6Wfw=Ei2IEvo(^meDWgY)l5Zx?zy(c4){Y|(4ba$|2-dj9iwGuxs_ zn)hJDTC^v9>*c-Zy-sg$dizMHZB*K_q_;1<{pg)cZ-4En_6~4(AibmM9i;tL5f7$! z$Pho&DTg^coZb=I`0X88?&9{25}PQ;IK#0zm4@T!703xg&J&$}k{HB)3cZKuol5Uo zdZ*DlpWf;8&Y^b(y|bL*%!1SLvkN7TpG)t&(M~U*cQw5W>0L$dB6^oP&&BjEDaFg` zE~9t38*qigD@QLCE}O3@i1eD@x_1~0mi-c3cRpWZwgerti#yPe)W^zNW{ zm)mfs=o&4QU_hv~gc?-47d_b9z*={-j8X?l;-dtzAE zlP>bqC=K+Uk$ACz-+PYUi}ap%4KIvFe`yrI7ro-}Rfn$?MfBdF_r8y^H|g2%)Y6^a z+w|V?=z7;r-&6S6p?LeiZiUnPklqg#VDvt6_%Xdt=zUA?Q+i)|!#|^E`Tq+=sZD~W z)@G>QSI+!3y>AqprqB|UUAXnW(-fmr_PvPm+mH0eq4yL02ECu@2X3L!f1zjD`&W9u zNyLVj@`G9RJH0>Y`ORNZ{wPbO>MweK7pL_8DMk8Yh+>@mF&*0aNZRO!^s6$mUs0kK zC8A%aAJeaC)Y~k-;m0bn0ceiuH|clPw0=TArQa&rMZZnIqe}y8rWq-P8T}FZIsHEU zo;288Y4bvVAO`b~sg*rr$q)UpRq8IHKQ8_8=ufOf*B{?iP2g}s`V(miFg7zxrIXN~ zl>X#iI+^HpgTwr(+NWe>Zu(O(VhmH$-%IJbKMnn9>90Y5I{FJbWqSHE(4W)s8R>iS z?|bs^&!V~{zY+blhO%qZ_j|Z1TG#cgM}K`2bbJGc8;V)VH>SU>Q#PT$sfd!= zjJ}rf^tW)HEgfz()UdS|Z6juB@HM!BK^JT|4Dxz`j6}CwZAX@{pg=Wf4KkCKY;#$^mQ|r{z3E)Rs;$^g#Mu(^M^S+ z+~E-pk2I)wE;)~;e~iZPaBKh2TT>7VDw z8T9q>2glEHc(%iH9QqcJl}gq54li)1Pe9PW$l=8fbqQc1E_E6G%N@DGwlC;k>F_Ft zS8GEH69#+s!37J%U*>MkDrJ00HT z@NS3qIK0=OiMZ7L4j*v%AbtP%PygYlk{Jt|CHf=YN7Is zBhL;g&(ZhI|NaX~9mb}l^b-BA>Ay_>efqD^e}lf?C+ffENyct<%_UAH9D4-R;9D;B zwnO~_nEtyC{r|tE&JXB+>Q#S8|06H`*x@Gzi+a8EGy0!9{R@X*7NzvRDtPFBL*H8W zE&U&z|2z8M+r}yVAGCdHbvdN}6aAmH6f}xM`oGZs)kSRaKcH_*`hlPR?oeAm^#3sE zrGGIvoc`YomZSd<150%OG8mh|7!2AB#$?c70D~%nKx;oS3?^nU zE(2RY77XJ%^8{Wxp+n36qxdIbFr{2Qn3Ta}&N;cmDWuT5hQU#LB%&uw6lsjZFCj-CDI+$CDNUiW-8_dgK zK36rr%l_~FFN1{`EXrVE2DbmNHkMsHSd7843>Mc6J6OVPUUJxkr5G&jlw}G^2{*o# z!SW1tX0QT-jTo%RV0{KFF<8T^UYWrv-o{lOu2!^~!Ro5C?8-G6_~!pW&wskqItU>?FJxQ;Ne~7#zT0R|fks*p0#NLnHU_O0@;VU@wPz7g7xNDKs$HkHP+> zDl=O)AIRVk1_v=XSUlF=l71)yJ^WL)SDZ&MxS7F`431%Nl-G5%80@g@G&q*QWekpE za5{tI8JtiABm*UX1}FI_IN9MT4o`J>nn7vM7&(K%`3%l<{!AaRyHt&fp0K`qM50-TxhyKEvQe2Fm{oo^$xT!xst$$6p!- z$;%>Y6u-*g69%s_c-I-s|8IEf^av<}w+uS{ZHMnjs-(Qf;C=VW2M#|p=sX`e{8*fd z(oY$DRvK9{e8EVK!IupFWbhS(Ul@GN;Clw&xIN!GwEcgLILCi*JwH19$>Glq{c%KN zE7ktW;5YZle~RiDc>W*!m%$&SdFd}k0=Lkn0KdIH_*YURV>leMlpRs4hj_?H#Y?LW zBZqNO>Uf=z9wQA#TGBkyWF&EVIvP(~{v6RI03)9NM>5Cr(JJaQGAKkC8DV66M#gff zu^nm)h>>v}j%QGUqDXj4aE@>WnPM$f}Gi&&Vo_tl(<>`Tr5W`8%SUzoo)bb~T-P6^yLmRp|aNBWo3O zM%HG;pZ_14!N_{fwmu^pFtRZt8xF<)pQ^8bf}7~Rhg;mG(2Z@@lHFuCOL3=A+})u_ zafbqhLZL;9yA&%@ywD=0e7F>CarmG(9|el*57+;@H=EM`IXU;ddGqGY8+$XEBon^> zuc*N&?Nu=MCNs~}R;0GIRoV}w15w%^r32W3Ey|XlwmDNe2&IEb+YXi8QQ9)HbST{8 zP&y2bwe{gBU4_ySC>@K^5R{Ha=}450Vse{X?QKTeZ7vN(=@>4SY{Q3|`=K-pr4vyy zCG`0y*(U(gQ5w!0OxrQD4JbC*2$V*0U1}?h(n%K3X6NYz zeFjQrig^}FXOn3+Af zQz$)w(vy62ZWHk(+QltBjnXr0Sxb`7&ZQ|RJ&%%&=;v5JR?qo_ReAxX7x|#sI3`T{ zUq#;2IhkRd!#78K7kJ85|eSy*^D19pCjG|^fL+Nu?g(bAC?a5K;OO(Dr=_{1% z|L<(3JPM_6QTmR{gPdvapO=0>=~tBg52c?_`jLElj=&QAjFLu~aZD{azoGOeO24D@ z2RSyNtp3UW3#Gp~Hf6I#!I=%t?2I)BXq&5MztacK+i>Q9GYrn0a5jQ77o4Tx%nfH= zIP)-HWdvtFI5C|0?XfSM1>m@F7KGCm&O&e&fwOQ=(pE>#qHq?6vsjN~ji}yhK{!jm zSrQI+{^9gv!zl`mUIDVs=6G;I#rkmgA|)IdVEfpz1WpA`6;2%vw}!YeWp}Sm1CG9z zF@;tG_U#PyH{rDG!5o|fPKPfXIw_nsH_5HP+3vTK!RgQCoYRHF&n4Kq46VJG?=oAu>+hv;p_;<4))&+&Q8Le z`@U(-x{GjE;UGA>S(MR4O4=^~bQYO27|sFW>;=aT|FKaTc)9PR(~3342N?voD<;a`!7e|e^GuUoRjhzV}(5PH=I-8oJyKwWE7m!MQFTJ{tP(g{QFUW zO`t6xhqC~jbKsoIA!e6-+~J%L=UzA$z_|vF1uutl5u8imTny(DvyB=|4~-lR=dzwo zG2vVR=PEc?=4MD{44kVu>P^5d+IB6RJKzZ~FL9Zm(PFcTP&?RFWeg3`QR=JcYe4F z!Ce6Eg4AzDS}obraCc$2i_knvMeGN6F}TKG9Bw}a`zrS(g#7-OX4~L$OK=^y9$c3T zLQ8J`-1Rw0SyEskASB$Q$w50?fIHphua@+18xF0f*aE+dsD*YE1+;& zEN0#-+!St`vH8U3cHm|lvu+peQXDn*wx_M(?cUs78t$@e4tE*Wu&w0X<*3KX#oAZ_ z?#6Iegu4pdmEf*SQ|&3XwTr#C=GwK9rGmR!-!ad^U0t{a+yNriG!(HG+<_w27Oumi z1}MKS-1Q22eQ`DrZfHop*-z!0z}+40rf@eS$0i+jb8aHB$XmeO67J4$x&DW{wQw6l z5&Hhu-45>dTqjUKw*c;raCgc%1z%f0?yhhLNsJ%=@?xFu0e2W5hq-&g9Sql&?)v!G z-5aj;sD0p?^Iw^ZaCbjdqx`>BAglC1X*&q+A#e}o^li0j>vJQvw01uXF4y^R4;LOG z93ni@kZKvrT_Ctag`5T87M}p*Q@?vWT+=oj?wN2;fO|UJ6XBi;cSPR9;f}O?;hrQs zS$GQjl^J7qj_xS9r||`ByR3Vg<8{wqPhf933+}aW&xSh&?m2L|jE8$J-19iV-SdSP zaEvo(@)s5K#c;L$cP}kCqv3M@AMWMCD}-0FyIOL?{9ehu8tyghw6<=MD~5X=+#BGI zg?l}nnDtvTn?~LUcY=((3GU4*$SuNKh2soG+y?h{5#w_X^Rm&zYP=J^^`E=oSs%L_ z-fAkvM7a0B>jQTZ+^^x@3)h^X)!wUc?}Pga-22TuxDUX6Qnm3Q+=oOwES--SD)^{S z-vzsm!<}64pD?~8pMv`w+@~e>438dipQXcO4NrkPHK)aYUd$Ji>P6v8!j}zmZS?I{ zY3zir!R3vNlDw`;=9~O*rwO$Mg*i+2}mBLSo;*HP`(u+#lh72lsnw zurE+(xjh0f7s}4a$g=n~f5jK>Z`5zkl-)nz%?9^RxPP(h+IX=KIpC%6=7hHxyt&}b3vX_C^JuvBqditMZ$5a7()oDv!&?B} zLe%Lk$b79h-oo&>`D66IXfDEA99|P%UwARRC0Gh?NqG98*z2cY37*5bfKe_yj}wIF z3xk|r#D?%H64NhWC|^^s4zD5k=wErW*_yy>!Q*m>gLmp!e*5pW;VloZ1J82F;B^^m zuG=iPD)suqTMpjR>^v;;GVqpV71?DA3A^L7_msR9;F;u#@K$06vxFAQyjFp?s`eIm zv&@g_yw%|y25${`JHZ%!P@{H zk9vT|BOu^y1dr!GFcpKF!rL0&X7ILvw>b-<2^8Lz@U;13t#21wNAG`nx+}K^GNx&; z*Q&i8;BoVxMKhaO13Sap8{RJP_Ee#Eg*S-x!vb;&fVaC)`#A| zcM`mlDQs<>k3{cOc%xVqc^{_a>F_RrcLqEw>6!2@u(1H|EO=+b-2$kx0F9>4rj<;V?sm%_US-e`DN!@G=oU*6?xQ#R-o@UDb+6@%>FV{(FMmBy^E zg?C-i9Ajy=<-*e40DnbzH^Tb_-c9h{gm*K%hvD4iyjny}gr~g@kNZCb(~Nll-hC?j{bWjyf)5HG;$8~d{SkQ9(;kI4 z8Qx>?9?yFk+r{=vy(i#3Nwuu)r&w>Skf-52!=Xg_S>Y7nRN-^N=i$-+8*K>hC3sd3 zFT;B!uWfj|1%UTjuLrW0UWfMvlURRd)HKrMn;9R=n784{`FnEyo}9n;K0F(tA5bmZ zaXLJHRRK>6Q9ESM`-o@gS(JtVyczI*g!d`DAK-lk?{m6+Gm`!M3k{Gj;o1IwKX_lm z`wreW?12n^OTwy=w9fw_q0!3O+326(n-BaM{ygx0f%iAOU*Y`)?>A;alYWP1{{K%I zQ|xB+JmEj^=Y~HU%j?e$e-8M7--nV`2}1aD!k#QWB>Q{ftcS{^b%|f6Cl4IeC}w$FTr=<`|w@( z9xKXZY#nZEc;6lY+YSD7c5)+_ssg_YzY4z%zXrd~Z%nM(X=DR_1iuA8hTmj~ER~_H z=lukJ+V`!KSxfeN4)Y9t2YzP8_rzF=rQn;}{{?>k{FPMr%fMd&{<8ErR=56g!sVGn z?m}f>3I2xgP2qa*SAoB-WLAa08pp4{x^N9@U~qtNP55gSoPpx34SyX@B_?KQR?&?0 z;cr0N9A>X|HiEw?{Egw;jG)_9`|6W*vKjo%xkqHlt?KNa&fgM23V$p3Q{it7e-HTE zz~5cXWG%Iws(pLm4%}W~E9@xT3I5I^b}9I~DmX~E8<}?3U{={an7=3d!K7)!Uhqf2 z-y8lg`1`;=8vefUx%j7m?Y#N>!#BeYhp&%+*$Md-82p2UhrmBnEp-@gLaln)YTEzt zwf{rOBjF!4OYBhi_U4ba7Hw$w$FjNEj>o|t4*z&|81v+;$rIq8NS$W6ExpJY3I7`S zC&9OFb29uhIjH?p;GYWrH29;a%4*X5t$#ZFGnlEB!Zc9-S@17}e>VK{;GYAZvjFAo zviny5eE1jGYu*<S7bN#t7EW#qckKe~C0)DjZFnHrQFT%i-rk=?X<@3&^$z{4qtQ zSNFCw{cGV*f`1+STa<7td{cfSe10oh2;T(%=A330)PE~{vuzxFxqbgOwu{ZP{&@I0 z{KpDwcCuz{{eQO#eizfS+fRhgYGeUThMarhKMvn2=OOs_!G8e${S-Et{MA99{$Ke% z4F6I1k1#t+&a{tFiP6k!GW@6ETiea{Ab}$p}Y#hW7+)Y;QtN( zdHCPK*ZSXo5&j48UxNR>GPTb93VbW|tIUhVe~muGXcqZ(`08NfPlNv^{CD8L)%WT@ z;J2Yk08q6oL`DYPW5J6uA3yHrlg2fOlB6?BESXs=62aA)Ib3?EM0#^b{ zBGBSLC?RlYq{-M{E#xaDl1MiSp@X_Y!|ww zl?@T_`!CzIK(G>mRS~R=Kqr^lG;Ncn_1<7L1grD>KwB8tps&f7C*}g2u`Uo~C3bmm)8|C8&!Nv-1Vkn)PDY!X;Z4hiBdQ0)Q z5^kNR$`Qe~643iUHkyJR5bT6tN2;2o6SY7=l9(9GWl5sM+>0 zg2NFUL7KHRq)2k45*{TyS~ygAjPO|DFyV2Aec5M*BRCns2?$O?a3UWc1S4pMJqQj) zaxOF4aRKj%6&X*L0j7dqY#)GS0FeY!6gXJKyWsKGZCD{HIH>IAp$P`5oih^ zaUO#6RSy>k^&`mOBGDJKDl8#u=~4uvx#h(qmm#=(rovnX!IcQE;(9n3gWzh$npIo@ zn*6m0zD95zf~OITMQ|SitD@TxSP^bRaHC{y>dUgDjAxF5k22p&N2AelBs%ykD3A$SS{ARft<7v}2Lf(~}j}XxRBltu(L-?tX9|h2C zL-QWyrGqaKeAU;Q!(4Q)O}|0es_R>n=R@!vfak&{$VXyj@B;a*=P(2pgb?d%6(9t1Le6; zo|A<&t8C}3JU7bo3-#K?>@*|Gi=ezH<*g~L8(3E< zFOD)l`$d`i|H^ksl>6m9LBSF~5-&SK7iCX`uOxc^N1v0U9HP7m$`zC|l&dH=P_Cg| zXMe?#+ZW zO@x~YHxq6y+(Njea4SRB4CS{$c`s?$7Uk_w-WBET#os}=qi`qT&ca;`^Rx;M67DAC zTc9ZKA>30q*pR}#yexKql=nq>Keo6P!Q8&h0_6ixw$1;3yaDX>je}AC4&_5oJ_F@L zQ67f!VJIK1iai|VBTzol9(kZVgf*jnPuaFkEr z_awX;4WfKD%6$JH z<#SQKiN`XRwFOi@ALR>Bz7l0UUMXLM@@UClEW8BeOO4<~d+ZUgsnQfc;);TA)pebs z#-OYzfU))#kR`EKK;>h}87rCVQP%pO98LieyBXzMQMUiO=6CcTqTKucFUq&6XtxW; zqdWoSyHU<7-`@}zKik)D8GmD``Qno!?!~}P_{8RLx$;bRoPxGGb2Aj`D4}(X&&%i z(4V6G8Ol1GysZEKmcNk9mlWt#ul^2P{s!f5XJLMia6XiOK=~(>b!$-mk#<^B(zc(4 zd5L}{pUmHczYG6B`A-o%{8_}`DF4%=!`TqdUeG|;r=aJcWH_f#8HIBr$A^?8z4Lv;f4s0M7R;cK?pZSxGlm> z5N?HVQ-qr%)FWU!d6+u4K)7W-ruq)C$)#$28=?KiViLk_Slc!^hT9?B5#jdAWd~NW zna3P=Lbx-76y61)?fh)dGmZJ&**Lo)JOJVD2sH-7J$TS@xF<(3^R=qm7vbIr_n`)R zm}?gcwI9O$xqvY*n*03lK!k@OJP6^T2oFYh2$u@^OvkMG3J1c&5e|{%N0@Tjz=p6~ zjzV|}!lMx$k8r3Yk3o1G!ebE*W4>mLYLBU?XE?$U2v6Yj9iGS=G0TYjkqGt9XLu4* zS(1F?B0LqL)z2t0RVNZY9pM=W&qjDA!n5d$@+7u`3ibV$1*!i$32XfyUV!itgk1lN z$t_KUx&>gWOA%gc3p(GVii+94iy~=5#EOIc7%T*9FOoPgcA@>MaW;M zAiNXdqX_TPSkUA$$j+<@*N0S0whTWL^_mWxj3%&9loIk%gVcSv!0a;ajws^xL$P_4Y2p z9}vEWkRQDweBUY-;Rgu+SJd!_BpCG(LM{74-U5g-1K}4UJ{5i@{9GQu`tX+szgD%- z35fUx;ddgw%{ijKH?$x^b|KZnkE{fv>85_RF^=#T(Z33Rli9!by<;Qwgg;T)7~x;2 znA7+hm6Z|xgGz+TY)n|;5um8pF*8Q@L8Xey9H`8X%ACxx!UY2=bE7gJD)Rr8d1;JY z*2=W`LsS+(rHsmgs4RxcLejP{DvQV)$Y)j-7cSADj6#F^Oq0V^p&MluKuX3AUl^vWf^gn6`J$6QZH{v+j6w3pgs0S7-ni`zoVl6 zs#I1*Wi^#(burgKWdl?O$gnk0Sr?VHP+1$5ftK8U<02*NP>Eeu3j483Wj$2ZC;fj8 zS0)vm|6o~|yvm5mCaCOy%BHAnmgkPj=BRA1Qg4CEmPK7{h04~lWE<((mUgn~w_`i1 zl9j}2>3CFjLS=7N#m*d4m0g6pqB4ksf}Guiy9@Ua?kOBBWOp?}3im-}UsR4lWj{sj zkIDh`|7?x}QL&0Thy`KrVBsOcL&>y(RyiCMTlr5yrCWe}?Ol0T!jGWB^*>*0p}^z9$*4R* zraAn|lj1zZAO)UAo8yDGE)0>kGADO3aV99Yg{9#je50IZJ-*V+D0`-H9@tBsy2VjNYh|% zs#H@J(2`gdw!KsBkS5VZbsbcfLUlO>`=h!vs>@KVNm?UTm!+gxLgD36T>;g#P+d{M zm4w57li@T_4pgQQZL5 zEl{;*)~0PE;l{#EggpEKRlPG`-P~wi`Q{tV-U`*N^CFPXcHCC-+o8(MA2O|Gs9{G` zEp{hVcTstD7eM~5lp!$))!jtwF0}s$7;{hIU?Kmwhw9#jyvB7<-51pZP~8tzz5Ho4 zX%}rc5Y>aY&1n72Tyd4pf7RlLqBe&r;V@JWNA+0IM+k?YdL*htQ9TOPqjNvdLsr@` zJX?GQnuP7jR5B-r{|>Q`?;RcF3c zZzbP;Nog1Jy1kGekLm<*H2fKLC#rY#wf`4X?>3|u>3dL}Cb3DV-izupsQw34`S$94 zsNP>_djM5Af9m0U!O5ulh!Sf5r>gy*s?<_uGOC;cP?i6$7XH8bG}E$H<@_ly1=Xpj zzKSaSzmhyJffrDv{}=s|@MYmEh7xug`S}l2BnHaS;YEAaNT1%J+Q$uE_wG(RgJ5CeGguDwtO}7BG{-T#Qq%iAbS=5#jvAnq& z)K=&@oZ5=0tt8IM1!oo1R?TVgS68Yvgac692(>khR&XuU1{U<%sI7zAdg8B3X3xU) zQQII7qPAgf4{94rY!lSBL~T>mz-D<3ptiZ9wqTOHU)9vRYFkTe8{xLX?S$JKD#?zh zorBs=sEt5vXVeZrZ5Q!(6%ImeFVuG9y9ca|-BH`4p!Y;=a848L)q>jI!hMAM3ilK4 zZ>Z!4qBaDzgG3+9SCVRn2oDt=#)q)X<#6E3Q3TExq}e@= z6CN)dE<6FX6MF(wK2qA~|4}J+t8TOJ;=NYJ-nFmojO9E%-0;rvf zn)QnFP`eqm^HIARwF{*4Lexg1c9D9*#llPSzJVI20MhJEmkBQyULm|vc$ILBp|o8i zyq4?O+I7OQLOs;0-5^>&e_^3+qJB!=qEvMLsEy;kP3<<}?ZWZG35F8j6oA^DhT`9i z+7#3#qIN%O_b6(Tn(|)Ze}wnt%_{l<$vlYKWYiww--l}t3m@TI5Y+srP*Xtdaihtn z*b~Ahg-;3fNAlV;qMtQX!l|gei5mSsYR{wgDr(yQVem!NUh3VT)n1msE7Y&MHq>4- z0=565CjU?R4RNLwN#3F`^}LN5pZ}u9^MA-B{XXg~)ILDHidy0SYvwNG{A(Yf_9to| zqo#F!O>;+W25O)7os>Jz&!qWt;TNcVS@5+Kujv+G(mberi&}2Occ^`j+7Ha#*4X*8 z4BGZ17XY=Ng!%=1?HAPK|H=Oiwcqn3sP%3EQ2PsY2erRZUqHG4L#)q+`s}F7z1M+y zpF9iH=RkeVf}X3Vs;(l`>HnE;eLms*xtO#qh&ug0>IA0uc>ignBHZNq#Iv$D#7t3dqrNQaxrPk&{-}2;Nrg+1uzQXA(gkN3u8ev0r^;iy~y_0yI7459o#HJpVyoj>a52(|vN|GWN2 zUH-p*A?g!QzXwna*Vvxib;nl)xgx3nM zL)|uoRPFi3RQ(3jZ?q`I-h}$iB5o=4--`OUg0?N7+Y5R;lQ3U7|2myN>Y8!tcZ;4V zyr+<#q~N_mOLbq)mxc#We-Cx8|51NP_%P}(q5cT!&!GOOam0KKbvb{EO-B8R-ZWZ& z67{DF`e_R1i|4{!zVjrSDU4$0@^^Zk=qO>#ew5We7=4YsX zK2sa&Um8<<>;H8AsB_{F@h$3F{MU=ce_gWx%k^U+^OGch7XE@d{Xgozq5hAE-%r<83k;DZfsFV zZi$Aq_0DK)Edeh6MQkhFPALE1*a3|li`bovU(matv1?8joZXaacQp1uV?WWH0?-&N zq%T5aZ#4EXLiE190+PQ!8V3}7%?^!&&^Wlzd z(6|DPC(*bPjoZb)3Jp2`#?@%tB+fNx$oV&}Q*bOA*BilSAB`Ktk^ff*Q&3Yt;}$e- zRd5`IX@Bwle`7ov4~R1XjXTh|TlAf1(EszYeWb=jH0~4s9yBK9d^GMwLtky1jBV0V z=lzW8Ro8=P(Ep47u<#M#qi8%Pg8mtJ@UM=i-O`QLt@p{fF_|wpMb0!B3`hQ8jBYao*p74F) z2Zkn(h7H*7(3pVbd|u@E1se4KXnZC7T3Go1#<#sm zw())MF1Yan8YcW38ub5Y{A4KNXW=hGP637f-^KYu_^0qMH2$W5J$=j5MzfJ0&5j6& z7DCiV!8wHV|03o>G`EO(3eLO=atc5+zi038Hlo zalwyBw*b-lmXJ!w*$~l2h>G`H{^f6~*v*8S=kkcQRB$Uq+acOo^frj-`Hkj9d$vck zqoR2JLy=JapV{q#=m12!BH9PhAVhmeayLZ$_&1kFv?rpy5DlJ%v-d3YzD6V3Pq_aq z`~wjkiRd6ihbrn|;UN^DRfi$cnGX@qe<-XPQp6sG=vYKYBRU4rP%?8Fl?%}@M8_jK zZf3$F`3Z({!>;;G}LB#hz?Lu@BBEI~Y>lEiwM5Bw?%Zj|NKy)jjD-n&A%vFf2 zQ(cSbYDCxc(*BzxrvQmvkBD#kAmS^ah%^QC^1WG{TMEf>h$e`0oA7o-BJDlBAhWm^(S3;iGc&Cbh~)oCJcwupqK6Q@h3H{KPa}Fn0*@k^ zEaEXlk27u0{wKtI5)t40A+yJS2GPrio<;NmqA7@;Lo}5Fg$yFj3rhQ9&PT*4K%7?) zy@BXeM0{wA=rs!TqF&Dl@uwkrbC#&L5$UD1=p97wO5i<2ABcE=7BQ{?7^LRu!jFU> zBl;xgn*gFu5u3004AJ+9K1cKwBK!C^PsJ%fNxm*P-yr%H5fA@iR4?`iL_bT+wEZaJ zr=9?_w(BoMzasiwQNIxTF|wbd`UKh5#o3zA8`wDf5Zvm zOtC5AHsa1qI}24^#nS&XE%Vj4!0|GOmnElH56dH77x4;+*Fd}?VsrQ_NqFTvm5Cu< zRh-ojuin$vOFIDZK*Ve2l8DzL(TiFeG53Fp;ChHRN4!4bO%QK@cq7Cc&Wtqz@y3PZ zrsR{eSuTKh3kBu>o6GprZ;zJQ{i+FFu+acZ+@%D&$;4@i zgm_PJc0;^7;yq?c76OA2?=_Q&cptbt_}H0B5X=8dC*t9VPgL3yirhy~vKM=j zqUiq-pMqG<-z>?Ev7M_}M`FgOa|XACM|>vYD-oZC_!7it^OXjB`5`_>crN1e3eNe6 zFW|;ke4+3n;l*{*GXV3;#Uw~kNAGXHz2+f@r{VbA=Y#d-;B8D`IY=uChzsP+YsN5cmm?_Wd6&) zBc~DHg;?J>#CIc}n9Cr(r&lvH=3d1ADfqlQFdFd#h^HWa5b@&*K7{yT#E**R6i|rq z7C_9&h@V1C|F7VaxeVf`5$oko_J?QlSWAL-nthnOIUAa@qlsDN(VPR#xzL>RUnV8z z&Vy*m|2KR7A5E_RrD{R6E7bdQ>7p5+>7nW8J)d99QKpP$4NaZ@+^q14OtZ?TGq&a@ zt?z%E4duw6KcX26_5D{yPHr#-aXv;5U~= zb2;U;e4a0wE17?t4i}~MR0XA*DxB*0XawXT4-*C=0G$zM{{j7H$-zC zrCOI??ljjEt}onxH*RJL`5Td-g&U)(L$R8h78ddoV3lGEG`A#e^<&1Hw`p#TroQ=Y zZc~`F9h%$sjF%*uJED0xnmeI+6q-AuxgVN*5l9MmMRO3EgVEfr$YOW#^$W1(o)n`= z`u|sx|NlahS);jc9wmBzG>4#h0GbD*d7wD<3$W=F5TbdAn1`Zy7|YA#hYOFOOpn9! zKgB#6%@aioMe`UD#|nqp>t|>lCp@07qEXLqG*8HB@kgL}7Mdf`JPpm0Bw$~i--G5U z!c+Nj8dHrj6o<|qO&tM2;!N_{nrEYV37Y4ic_EtTigO;Tmon$0$@BjU$&19iI1h@x zlr$wrqj_1Lqw=}}%?HrD63v^@yb8@5&>WMGCNwn#G_OJPTGjS-!m(@-j??QY##Xoy z&70V=`50tv+=Av^Xx@q@T|JuP(B#iwMBkpL5 zpGULj|IwU+=2Y46TyBHt7bL0k|C=ur8NH0=D+T>3buyR#qGbdBb+r1RY0dWyn$ytK z-`<;VqN&qVtXk|n%;r02euCz^X!59kG~Yw>eQG1kUjRtkhYIrTN;E$bew;^%o`L3< zXz~|eX!86|5uc;^MNUh@R|Ws;JRzFjqWL45I{&}P^Z%7fzW`|dUm^1on&!-ZMw2Ih zqWMeC7yTQWzcWbwAHqM;{A-pR|3M4nw`N0Yc2)?&jqz)HFUnzyC#RYvDFRoo~?7vprh7qO}8BI_;swBOuV)smMi# zKbWMA$JQXU_C;$qw038#jZ;eQftKAA^h0ZKQNw$owYNCte^}?D_d{!c(rTmLU~C9hnPpdSSRO>{ zc(hJJYq;c3D3~XrH9}$|a}KeW-6?3DiPouToq^UUr8%&>Dxvmhhp*0?fjiw1`{fX8cXuXftooGFamI*wB*4=2`kJd!A_>dQ^ywgq+eJ@(Qo{;wk z)#?LiJ;;hum5TE)T92Z|^B;JzH$H~elW09IC6gud1Y5yk=_Pa!Q0r+)KGV~~R8!D; z1+A%Qy@1wpXg%M{R5dSEFQP^NkJihxquzg;i=9P0Je;tv8j5M{J?R z!#@>#2d#Gt`n^1r_#dG4KeRp-{UKV@(XtPREz^(C`k0Mw`h{rCAWfa0q4lj~K1WOb zpYmU#^_9x_b#5(M-%y?<{SK|4CI3BIKS+c2oLfJN{wcRAN3?!H>sQs=Z^GY&e;865 z>+>%pbD{OO6#jz*NM>V{*^tam!g5UdC^!d_Imxm9oR5e^|NlznLDCn=yhs*6G9Qxp zdmX+f!wEvk7ecZy5}regL{mVrXiu9h{*%S?R7jRU;viYFNYxKXDbG%pxJvE`{k#-N z0tL%R!hg$^RFUkCq=sZgBy}W9A!%?HOClsX5-o`pYzkY#1WC$#DW+e5CB0vOA?X^E z7me?q(@2&^vJ8?HkSwbt%PDsGT*FL6vJ#T@kgSYkZ6vF3NG7WyS&afV5E$fB03>T5 z8NlbW$(q8ogai5D&pHhG+W(>Cx~wY_>m%73$p%O^MY16hE&j>pBLF1w|3#NWvKf-i z#oxm6MY5%EtK0_B+bDKhBs(M7j-EN$UM1Rrrc&XKNaXzg)wv6jT_rO}sP%u|y^}qV zT!3UxB*TylMsg?;t^bp~ksQE|n&=iF*%!%v3hvKVw!tMtqFaFEAVnQ4rnag1QAr&JeBjKS#~k3ZA1J&lR4R+kiw<04=!?$rZ}(BH_it zOORYDVl?O0nD4bn#){8dfZi!0iFN54Shqcy zn~;o`%*{yn{tpuV{|m`DVe$X3|{hmlN1@`y&zqr%68Is(-4%GayO6G-^; zFC_H;WRiXc$rL2d=0T;JDn9@JSjfD9%JiQ5XtmeEcqD8mqsO;7t8Xw z`11cf&R61mjpRop-{g`=zD4p~k&Au-mT3K-6zl)wC#B*9!6elDE7JMZI=>;|77&s@ zkeW096X|RU{w4ey$v;MLtYE7hT(N~ZjC|sLS<}uQBk?w(XJ)~Q6=%wo;-2mz4NH+)Qu}F_B`qfcLk1pt;N_z}bu_p{Gh~tnRpVKoD>4`|`NRf^} zIuhxHNKZm~7SfZEo`&=kMe)#e5u@^iNKaRg&R@it!hMtT8K-3X-G|4Fs~L;dGd z##$;Lq3K0Pc*J z+RBFBHae{jV%uM*0fd$c?;xF4$iJynZy|jiT(oV_ej5#5BW;H=xgCOLjM0nsx$={ZI#I!{}1iikp3w9e?rQ$ zJ(2#5^cNAoD#>q#3UUhwDffTG|4YHY86^Lo9=|<1+KZyC?VxrawC6{A4z%Y+Tekov z*`BMAoQDb9^9tw7nW7gU&8P*@UZ|IQdttOS1t@pLE{68vXuG2OqP;{RxuiJ#geA0{ zoL|Ix;`_n??XvOF4rj`sT}69)v}MS$y#?A^vgfq7G9;h$HfYrD$XFvGq@YOC=0j;+WVosrR!UVX+I_RL3`hv7Jq*+4?z21v=1z_ zX$mmSJ>`c=hU8$=O@D{zrQ_ z+FJZu&6rzjpU5gAe(r)Wh1Uyjpq(uEjfUdfj5b&JXzLcBeXHnkX!q9tw3D&p z(Vn1jaR^S9u8SNodQrx9>$eZ|M8-szCdGv~~W2IzXZPVYHt> z`w^*qRC?(D6?|McxzPWlf={WcpB6roYZg5PZ5z2$(S8l>=g@u;?dK)`!b}Sld=2e?FwVeXB?@e*YzcpMasW20GmTA=BP+ z@2rK+Hs}mQXH#_6MrR{*)6#Ho(r|HT$`b@B|4j< zqnH1UY2U{&Q_G0=5frm`!VSsX7M<<652)mgU}g_ z&Tf6}=Q7l=yKoQTo=k3h)t)$eqhp=wVA1=cvmZJKqO(6bdikHi`ZBI_5EIHObPhph z2s($Nb2vJOk^gVh5rxc==nO;WD0GfRhetr5GgP&4%*>i$?e!Y*ICPHZ7P{%N4ff6n z=)8o^iRj#l&IoiaL1!d7=c98HI;ZmtijJNCX?O}c_6tb9{0qdqut;^0f*0FiP$Dix=Nb{C(YdUUxg4DWtYSLYnj*DC5dbgoBdY@U{9Om%J$U;F<|dy|4UqjL)z(TwNF9f!{S z;@^hO?IOmbbGL{I=-eSacM9*yP0bOViRftk-{I!J!>GqCN}MMo^CUV`(0NMq(|l*X^NjFWLrRh}RfMH|4xQ&^=L>~} zFEWbt@G?3-qw@+nAEWasI&VthYv|Y+BbM;>Lc<#hPGgXx>@5Y~M&|<&@1XOpYWuys z=FxedlD&5MA37g$4d0p0`vR){h_U2+g3g!d%wUlGPto~I#OLVP$)D^?MF-Ofke#p5 zvE09r%(t@tyP`zjqw_;fi~l2&Q|C{)9&~;|)(4$m(fI?N-xT#bqwD}Kiv3BN#9zX{ z(fOyRIh&1~Y<6Ursb8EqgmWTO!fb8@=V9*IyfY<{&5!PO$QH1AW7TE+1OVAW$QDL6 z8rdSqc0;x(vQ^n7vc-@sjx0dd7g;}KOCVd4>rd;G`CO2dkkQX0<1GL(SLhj1z{JQb zBg>G5$YNyL6v~R{zgbNJbz}|p@GQ!c6bYNiTAaJHB%iyHrIObcP}X5CjO`-h#y+y8 zko6a5X(6BgB3o9toMA36NlpRCRz$Xv*@;a5I?Ptd3sn?tHDs$J+gOroARB;eU1V!2 zxRz246!P$AWW7hgqSuqm`pS2MJYQrRBGdj)&*n{#?SO1kWLqKQwh1!b8f1F^GvoW8 z#^i!O+gh=D{+sol|01&%+}`q{40GQR*&t-x|3S7h?_RTAguCXuF~nY5?2hbYiS2=G zPh{3N1|vHd*{c7|HM!0NF5P$I)YF$8(^W4Cxb)out?kk&Vb#8puX6 zcILxMracAOsmRVlHVWD4$WEhxU3NQ`osrYXxc`IfEM#Y^T<7GaKz1$#Sd-@?yBOI8 z64U#i*+sntn61jPOORbkNwZuHgzPe8ewG01Hm~ab%N4JdvkD z_9U{W3i@eE(tu}?eS~ZZGVZ4#n~Ll?WUnB5Ucnb6^J0wD_+g)6aLZ-WCwD z*K@T>I}O?U$lgT8y8vY2OvTmq&^IKr-6=&$RiIse|?G{1}pDFF7d&O-8n>P{omF4pZvMeou`+) z%PkG9DRR;5-K(OtceA0Ymk z=xXzaY6pt5wk%mkxUP`?zeu%#WHv;1D|9zPcXI_dMt7532Hj1?*{qP?LcuNbpy;iI z+vFT{w=EKG&xyOc1NsjTu_L-WVX1A<-5K4f=lJqq1J z=|8)NiNp8*(bdcU-65inG|csrFt6Snitg#?9)s>kbdN=MIJ(130Nvw+$M=NIBwLtu zPY~KK0E`~NiH62l7AK*5vhwBr54zg_Cw~;Wrx}N0MWpUw{eEuK4qp`X6AR2$xL7};VEyK znYYZ$%*@Qp-O^uXX4o?BmKnY>{*sb;d-t3i9YvO9S(atTaU4eOVB{f2?quXXM((mK zBH?aE?y2j@hz$W+Q``SJqKiK!|3PI|O&(_C38Oq>@KHt{t4m?Twt&{NK~?N2S~D^7 zG$UU#@(d%oX`hj28F`M8ml=89ZeNfey)p7)^Sif^myBqQu5_DYjJ!J3;Wb8V2xv5U zlaY@Zd5e+v7MH<7?EP=U^B<%C*IMCygC7|D(BMY`g~9Mo82N$``y628Gn1q7 zUsF})mx`$VUnwH1A0yw;8lRDG8Tpx!?-;35ZL|Hz_l*2tGJhPEKa}$eBY&BkUm5vL z8ikSH4gO*9&$^jvNNXHg1d5Hw&`olY0W@u#?e~PnweHWYZh9zlHZz@)@-!q zrZv0elAi_NLQDStC2%gCv(>h0&C_^nYhGIO4NIS2Q&rCeX)R7m_J5iUTMN_D{hzcJ zH7JY!Gg^{RMrgHZX=kLR>;HzhnyPX zeS;ea98xx-wK1*DY1#UJOMU_QUt01D;QuO*L0VEToBy|T{%;btqP2C6TdlXHwF@oV z{L|W=mTmiK=_`O?DLc{HxyFZ-U1{w`YcE>1{@>bTNY_^Yg45E)e_HbW*NjThy6;Ep zY+C!%I-1r2mUH5|JHE*zjcfy9ZTyJS~~xy zW&3|xy8nmPi3U$Hcyeux8qzwI)@kO$r>hUE{4)%mY49w8mU<4Y+i9Ik>nd93(Yln@ z`I@Bsx&@Thg$6G&c(Fm<0&1G*`VXzkYdh1r!ftH|NcFs$*1u?7V?^2fFZQ|4;Pth| zXx%_dg8!)XY|CitX5*1gC;Yb>yshS;r5<9GJ80cU>rPtt(z?s!-)(idr>?2O#+~k` z^%$)OjORhq`Jth<4;#^50krfLfTcce#3!t!o*W91A>ip6H~OX}xP% zUZC|Nt=9~H$>6^YzHIOngRcrS3G)4y)b0%p!&q+bEz0 zf1lO|&8_<3N3=e(j33j|_rJ7k{oiV2^v@027SPt0!|H#HGcGNO|36vkx3p~kXG?z^ zM(cZnKWMDh5`PqEl%Hu?kZ=7$>(`-@ztQ@AR3GF2lh$92A3Eb`-nySU;Eabeel50f zduKwNX*8EJk->>^Cc&A~@JVqd(;7LGH)=amsI#?;C^0e?wBG3ocV`C&wvp_P{A|)-+`*9Gm|;OW>@8vn0+k zI7{Iy-Q=<%0B2bo4e~h4;poOuoaGI!phJo9=twuCF|3TU8qO*>y7|9J(u_L!$62Ex zY6WHfzk?Ci##skv6T{cVSr2DJ9NqtElnoRSKXf*-TYChs5^*-g*$QVfoGmSBbA#d` zTQt31`hLBK#Mv5Wdz@`ll&Y~U&UQ7f{!nkRQ2LHII~jwEl8=7{o>!Z0Xh4nsR_lwbh>LNqFhokx_rExo8N6KW zDKZV>=pz8mRZ3C)ufe$==UO9PhjTm5^*G}BHzySqu z0dQ<)qFL_1xfkb7oV$iu?$-4~=N{2kv#7Oo|4(fn9G(B;Jc#og&OW~bi~o+rf6e$5&eNvAGsEI+3CLU>N0)$bUNHC~&P!&Ke-EwkGLG)6QORnt z*Ko(hc^&5?>zjH65RRSy`BA&M z<*Fgh&!)^TIKSfjZuoDigM6Is{Go_k@};@+7q0FIRpAD4!JPbu6zf4!kWGX=vP<#r!Cvm65-4k~z+!b)A#+?Co8r(6s)8bC2%qF&m zxYG}j8FA;uoe6hVt(`lw!C7kIxU(sn(r3q=19xt13wKW3xzu#hcA|h%=FwYan-8~R z%Ihlt+y!tKG{g@7aTmsI<1T{h;x3Bo;4X%1b3Au(%RZt4Mb)}$|BK^#bt-NbcPU(r z|F}WTj2q(W`Tr)zegWXxF92No1%PY60C4pe0JwJkzndFg7%Xus+$C@aP0=b@zW+64 z1gepB6u?~ucUeQ0Q%Y4}#S@(Y;SO54;zaP{ziT>S+Y?heCL`2<*Qcf#G-kX;P!I!xWoZg)4hhZ0ro zy=WheyEpB_ardEp81BBb*EQ?yhr2&*aiIfnU%)*O_bS|jaF4@1Sl=VNhu|KGdnoP^ zb}M-gSKpI&#{wVF_vW}q;U0^7^zil=HJv1#V~2&h$K#%gdjjrBxF>2xxsG@i_hj5t z8d1Xh{GYg|;hv9sI_^2RXDFK--R7QY@GOI8H}AXMbF~O9x;g*Z@C$G+#J$w;i*PTl zh2vhLqSRF`v!u%nUSaUcI?3>>aqq&t2G`!>yVv4ghkLyWskaBHgd1^h$CYw#vn)5^ z-mGt6Rg+tAZ>@2C8|&(Jh@rN37{i^l&Zf!TxR2xBgZro@-HUslA@}1xXvhNsm0vyi zA%iymcXj@6438;8Q?Dm*pEcr>W~HaBh^Gxcqx!3Q&*46={BoAHKzVEFzKHuP?n}5| z;EG4Rh5It@>&E;F?yHvlwR%H>K-@QQ-_&0oSfR%DHtzel@8JFy_gyRcJyZ2RwUQ0g zvOd7I|9rV0;(nxi0NjstKY)l*T+e^Q)t`dth6?v{-K!wD62HX#3imtQukH4mA^lrL zv_<6l5%+sb{XzZ)t8|07KN<07gTE+U`G2E5CGPLE$HV=D_BgoWcz@Nd+t{i-E^Wq~ zaI|KTJqe;xdwklH(w>0!gtZ)%*`A2@#QOJ#_9Ts26rYUtZ*TYxw0EOz z`#)vI)!vEr&PLzG;I0CjF-tS*5b>JO80=>p$&%lv6Gl(KKm4gZt}5QJ(MG zy7*7~ARRa~^atZCLXL{m7fb zT z?09q3D&fs(40`^L@~9^B;4O$ZFWv%py8e$Ri~m|dg-z)T;Vpt^>pw!TTgO`zZ?RE1 zmT?5Hh3Dfrcy7H!fY-Jp&&ui;?2hKb3-H3BZjlx$mw1a80Tb8jH6Vo-O!zd*ki%_nxK3srJXa0Pg_2NI z!@C&oQscZtQ_Wmvy36sd82Xqk{&*Vy@$CCwui5{PcP-v^qn5;s4#)p)r2wuc{ny#4Q8M^1;JzMkRJ!e^-$9sW}DE}gzrSV>( zGb7%=@qWd78Sj0(SIkPU;@Kge-fMWTYa6NW+1q6AO*Ljic^mH?Jn;by{&+e-7^l7h zR=m0W0Pp|sKE(S1@1r_9-p3*Y?-M+I|7-YX20tGP*Z048Uk!zPjrWbMhpffJspH|9WDzh`r-!eP4CeRsgEXo8b zL@x1`&O~&k(u|#n>FD|o9gF`RUH`Y+$>~fn#HSqQnwriGbfz%|8=gATS-E5CQs_*t zoKmmayq%foEJ|l)i1t( z)&h3B;84gybS(ZWzkUL2Jd4q(=qyerpff_pqhk)xaV*sx=4}u8?d5Mr<3An0uC?JI z9s9hiW3PZab_7JnJ^}8?D_|)xsU;Ym(aEhAg~3uoWmB(#G3fhWLzbko)L5k~L+4OB z%hK6_&T@1%rt=RvtJ7JYjvfA^1+A#g-&x7@U)i9>e>%GV(`2ru!j-ZHo%M{eCLKBa zb4EIA8(c@n8Wpv!ayIz-bT%-_8)`4p)QvP%%i4s_W^^{y+j?N_Y))ruI_e(AX`Z4DrCT^MfxFS!y{?Yk?mb8Vhm?cp9BeIk$XIqhjLxZa4ySVzog*yckplH< z6}LAd^-9FK<5lP=NWRQ!LtmW zP3IhIi*sxHH&88e0i7%9TuA2%Iu{x9#m0Gw!AlKZX7F->!l1C}WmnO;p3c>l>l)FA z&b0=w8%sBv|95VrqdR}JUiCbob2Hr@om=RRPv=%T@6)-Bj)YcG=@B}&)3Mmzxr5G~ z)`E8#yxZVC+B)Jk2I*M*@7z!40kyfh(1QjaGN?maTL1rSqKC=y`)L)bwGh3<3Y9^A??#>AYtAuNZt)rPHJLR zD>^^W`P!1c(HTYOTZ7*j{6B-=3)EZ&>HJ8?+NhE93!OhL`>%9<8|wDEQS|Nbkn$JZ zaT*ETaW%DT+IGiN9x1mw0o{4&PDoeZ>e8Kv?!D3I=ybZ4PE z72O%=PHhZ2|EFv5ziaWoYw=(6POn00>vdc8 z{vVYyH{E$gZ9;cGx~_4~Pj>;ji_+Egf1@m9aACTO)Ly4P)?Lhqiw{d5p=;01U5)>m zQT1;dk4LxDxRaLKrR(dmhT?(2kZx2{1k#P^Zb7$CcWt@}-4*DjbeEu;saVaG)3x~D zwfL`;iteEH4fTrdl5{QjH~dS}T}JzLcUkSx%D)_4dH*XEdH<`FA$>)l?Hopld@w({>vheG`M5 z(zW@&$WhyB*VapIxFy}g=x#-KZ@OF4-I=bg|5&bV>DuJKtCN4aI~d&2;7$UE5_J8? z_;;mi?|;<-yVKpnY_;dGE_*3kQ?GsK?o0PTy0-Y!)$`xz9#E$mevk<~xQP$lL+IN4 zUnHm<4ySuM-6QB8Z*02$Ls$3z(6v{<-DBt;tD#jX#|a$bCm7{KgD25Fx%M}@rx@i_ zgQp2JE1jW;O0XrM?pbutHr>vt^`vXB095ny>Hg38|8y_HzlZL{_;<^!nC>NXFV*vP zyO-gMcU?~R54u;-wV2kulI~S>@1}b--J9rML-$%W?-rMssjoA5J>47hjcxZvgZ~3VfNB4fZ`l^@i z19Tr$3n>1OKr@By|2Lx1AEW!Y+3E?kq;lFTVD&MX|G#Jyc?5XYc%Cz8-~V>?`(KsW z|4a96y6>ov`hlqXF5UMmPX0$D zkL1#r`99rGP0j}fKcuVsKk0sKQ1|~Rr@(qV?S4-8TjTtK?w7jm+HJo7rTaDAZ$|m) zen(dqe~kHigFn#ymF|z`r8*~}`?JAc1ZpV)mG~Ro-PCB`~rU;{1Sg7{K^;x_^aVBfxi^~lFDX<;xCQA zBK|VQqwybK_J0br`0s1{$Cv#->eYtp{NI>Y#@Cm>_!|6`sQBvmYvHefzh+aZ+U@GyX1C;_&<*e>Z$x|H0owGnzgoa4-D5 z^;Rym@V@xx;_qik`{N&ne*pfW_y^WJ_y<|i!T2`+H#zu+;U9~CxFsE7r5tJSD1%4W zCF1KAAjRw9#y=kaH2f3rPaHCwWD<1!2VcMc!ar5V2+5`R>G)^ipJ6;_)>(!b&&EGz zl!AYr@tlu;9sULQm*ZcEf04?mw^aET<6k2D_?H^IY&5TByu#p>__qGz+xm~M>p%F{ zj&kB(kAEBf4fwXa@85`T`+t1h|AT+C!COZ8heb;x-i2?$-@l_y#n(pw#Z5h3v5_Yo z|6Y9k>=*w&Jq=#l`T=|k{z`mEM=t+if>rPz!T$~aQT$i&AH#nR|8b3w{uB7m=u1QY zNxOZ@;M3Zn>d(o2`vs(O>MLOU7w})ke-Z!R_%A7&T=L3QUSz9~S4JuLui^g(-(Cv) zZ{WX&|0e#s_-~nZPUp7yldl_whf){{a6({Xp2t!v6^WW2^Ef zY6Kx_O+Ul`8sA<7_+MDld}+|ue}qj;r_A%=e~bS!{&)EHhS!(8-|Me${T~eeSbyN( zK$ZLpzW(`33);8N@;iZp{|CX$_Yv*Obd%s?<5!I;(4n$6z*1l1scLn1f(Jf;kE1BbZBw1ar$jlnLfBIIsRs zSvZw4zojlPmdu3+S_F19M6d|K;slH8Po;y!nj;kIKTroF&8_@8Q02P>Vi`UEfxsgO z2s#8lf&TwpFR_D}f*>SFjV&VRY3l^B!G7I31ojJHJCMO@of9lcP!J3VN`gw|Y-aE7 z<(+b{gbJ5%t>rF7up+_I1j`XDW0Ymbs+aB`AXwhoVue~6!&f3$dGywJRwcNAU^RlR z305cAm|zW~uSu{D!CC}sk2&Z#q3ETSS(jkFrXVe1eS!^4@`eUC8Wm2kiOJcNU`v9{ zY6%3J8}Xk6Ta0oVWvihNY(sD)!L|f@5Nt=VBf<6rJ7}tWx-NSXWG6G})rU{8Vr2=*e_dz4PF55c};E`IF;aNf@6h3aLkx@?G1jQb|X06;0a?kK7`;zfp&Y6!IKG2 zsVSCv8iD9=I>A|%dWOL>1va5Wec&8|^NoHk!Fglu(`_>fB{*nV7ZTh-a1p_k1Q#3S z5`xPNxm1Ip#H-+Pf-A=S)BfWuc@H{{;3|S!2(Bg&3D*!@s|Kt$F9p{T=oTOXJ;a0H z#?e+IxQXCqy_KScU;FH>1hpFa3P2T8m2TH9H>&xa1Wyy(Meqp0-2@L3+(U40?Mno< z|0lTLG<=|OFxB=U0$ceJY0G_K0v{!Kg5WWN$F=m@Ic1+iV8K7o;9r}I;2DDFEX%XC zeGGq|;05K8OAa~+ULtst;NJwV61+^H=gH`ki$IMnuMyau&){{fk^Q*V=x-6cNANbm zy9DoOlJO67{fFRv!3ku(Jx869-~)mWiKK&nM0g6p$Al6SJ|Ucm;8Q}0y`K@-%s=>? zz~X=KWixIDUlG{Hzri>4bD2Pb?+C{skWzjju=#)RgN~oiP4KhUUFp9n zqLkkVe%D!0@Q1-a4gS>(%0dsvB^;m79zVnJ{vO%uXN_<|!YK$RBAk?PV!}z3!RBLH zN;nze7)n72(vXKs_sy8DKaq;dE*oQ7If_P#6CRXD~RUK;^HWBEy*p zXCZ76&Pq5x;cSF+5zcP8=CD%c97}(l{}ayBSTCHHaK6!65H3JyQ~hv3!i99k6)rqF z`?8FS5-w&kW%H-#FPlGY0TiFFeL2AGazBtH1`b#f9r2mChQR&L>LpU zPuM41oiHK%2VqJ$AhZX8FxO|surOE}tOQCyhA%<5G~tp`7eZSCGJ6u*{6AdQ^jS`s zn-Z5NT!nB2qwA-^hO9(5*7v`muKyG2`44qQ!ZirjAzYJiZNjybD3?44G%d9*;d*M2 zzxg*H+?H@d!p%(7Muay14>vJAHy!1))XfRCAi^!whr=xmZe?(5gWCwy5;b)@!hHz0 zC)}0L)_+3%{|n(xb&C-0Oep(5M_Xq%lf1jxe~;S!gnJrsFN5|7pgy)Q;emuU{}1;! znFox@8D>0K)lgLrAv~1uSi-~XR^R^;+WbG%`M(j5BGmam;W4B2B|MH$5C1fV6AYec zx}9Y38o}uOPf~XvV9W6^!ueAg#RYI zk?>x^e-YkIcoU&b@57r3<@>Ln2yd-xM0lGiPX9=Iv zm8C~r6Rk*?8% zsrLv!ApDPI)J7qEe=N&?X!MWFRv*_{443%-E#YT`pAY3|{5R$=3BM8-BK+FmH?=z% z{vF}})m0uk!w-ai5&mcyYqMMM*IN8yL>&SMeabAPO5JSO6!If-)jq{~^+szgE+PNM8`wc@;|Biwb&T_LAr_qKfDQq5;un zL`x8@LbN2&KZur6X0_GQM9U1Vu`JPYO`&SB<%w)Vk+Q95%q!_Q6|G$Ncf(gDT8C&g zqP2*03lPy7+RLIf|L$?o+I3l``MN~9&O@{w(fU^34Mz1R+K6aVB8&ggCYr0Rnjosr z=0tlFN%eOo+Jb0Xld~n!RyqntTN~Wwf5zfyJEHB)COa71(cn%3Rk+$}7ouGiuj6pE z8`17o)*eHfSp1JP{u_NCq63NcB|5-L-;ZejrW4t_Gb0{EbR^Ni!`459=unMO(P0J; zHz@CaXH=Q>5?OQ<(b1;QF|}?)#}XZ9l;dm4kbWZ3NknH_K_?TPLUcOOsdjr>T?@1G z8I9?*z0M-KnCNVxbLvJRI@kF1`!AyN4PIdI!XbkW0Y(uMU8;CpyT(eF6J0?hetsp< zgG5&mNrPTZ^e>`olv&&NTB7TQ7O+t%x`F7%v3kKxL(ZFx{}!TK&B8YM7a`i>w-en< zWamFecUryl6ELE?4c;SAg)~~-M`Y(eL=TMRQ4bM4OY|_2Ms=b`h#uA09%=kH%Hu>& z7^R8-L;BN1&(zj1J3L49vhhDp^n!W*iw0k+`vTFwRg-!zfolFL(MLqD5xqzBI?=n9 z_YI;qP4l-5zHQK60o1jq$NEU)zw!T<=zX)p2Lg?vLx52}Ci;=+6QZw)KD8v<{1e&c zAFZi90z_XDeKp!6h`uq-Z{@Lq=sSb|r;ixQ|GmK<1RDJ(qCbc<{u9~%Un2YeOQipQ zA^Lr+cC`6_^q10m;~2E_AA0t_Or$A&e0uBCn?R-YCZsn)Zz6iL)0>#y^z-CM_$ zvZo`3QRbkxAiX*1S>&&0xxKk9?>q+QH8>x=`Rh{XEueX|tcB<;+&E0n;(u>=_)l*! zdUpPga7vu%wdgHL&!HF7bLsWy*@HmO(-}pt)66J(U3$Jz0)yd@9%+g7_D;27pI%8X zF~w5T#Lj={>G=;vEQT6ZcB}h;3|T_yGRpLpqPH@=rRgn4Pv`%Zy6iC3rh>iYhqe+8 zZU0YirJ7=PTZNtmc6zJQ)AN7mt!{7)gKG-3)U{M*gRetx-66hSO{cd3y@QN%LwXz0 z+mYVJ^tPh63B4`pZE8uI>4@1I{sN#^*KrG#AamEIYFitpo&Vp{|3A{(&fxY2cTi5_ zr?(Tm{psyYZ!dbgST0@vr?;CyTmSFvVfdc4Jq_2%KfQf48ua!xxZmILp?3hi0~>d( zyK3)X<3EJnN%Rh-cQn1j=p9AxaHAhFwC#~{+gMd?cnrN`>q6-rXPk2WgSe=i{~%EI z|7dSD{A7Bk(L06S@Z(>5kfC=vy|d_@VYSxHKgwT2_5X8N-lKOe%g;;iJeCmrd}8UF z7ts5d-i7p}j`s6+S%2tVOz#q1i0EBv@G^SW(YsuiDU^7H!7B}3W$FK6-dUw#fliox0?lJ~@G2Odo z$bT|H?b0mC0uqRM%g-kbCuq4&JeA2s-xL0tu+r@KJuJ!#Os|LQ$WPe1;m z_pHI^1lHBD+ZPPJXz(S2_BCZs|NlAh{K`u|^g z?;5nvV0-^DT)zsTXKO*d4+O6jpr?-jW|mKgm!TvNhvBa@oh!>^zEAf={ej}E*x)MNsr}qc(IQ0Ic zr>6srS^s1eD@pOV#I~X(AAt%*dQCh&@ub8P5KpA?WBUYH`cXVF@g%w~XWGi=OT?2I z!{o$MjFE+F6KIsFh-V|7ns^4{X^5vY;2;Ws)&7PuBk?T6GZD|Ma^%<8 zB1+a6<5?AvAgQ@#C!UXZ4&u3q=Oms>H4zD>5Ai(2^J+%8_9Aqtcpr}V{%bp@Vygt$fQ8ty2kJZmf69sy#HxI-KgcQr{m zY3v&ehINUIxksE3$ClKulN2g{YEZWT5$6UAgQY;rJ0M<4KiQ6#Fu0@^WHupQns^z# zmGG!4El0c-ajo9+>SOT=23J%DyI z>Z2aAUh}3#OWc6uQQ{4WwScpGEbmiRg1?TAk&-k$gf;vI-+|#1j86B(^O;mREv+i`ncN5>EE~K&LUTp#ua-SZ^rpiA+{4nu@no*YM z4TMx}519e?k1E)=r6E5r19t z54-%g#6J^%NBje^#eX&0_o{6ZE`GEUe^Ni!q+jTdNBk@CU&Ox=+p>SGuK;u`i{%#p zuh))8e;oSbst|iWLf;UvMt^+z6RMv53Dm;EAdV_^=}%05PWqG3pNjsZ^rxgh8T~2f zPu?_#*g-DSO3xhYPfdRY`qR+2_}`zlPNhFaP1m1Z#ab_*KO_Cw=+8udW~;@&>CZyn zR(`~KQZF%-^s@f!26YKYtK6T9{=)R>_2_|1%S$t zOLbd>zC(Xe`XlrglOACL7uWgEBL2p}#Brl>R#OGx|%>&*?8ozo0*$U(&B?{$Z{qv>>_c)s@Lv z+Tb$uEuQz6wcF(k+7QsUSHS%h=&#sxqW(&fs@F%wb|_zaNk}5_w^Mp{f+5wqFEH*l>TNzd~@Ap(a^UT)@!RF zWot#Wlx^wnKz}>ArN4bmG<-+;JJa7uDdJR(g?G_gt- z@G}jbW$Mz8~nuJrv^W(LnVD_Rtef)(*Mcm zU(vV8fBzf1{np@j2J51~7u;@tps&GSuX?!e|ExY>c-{5r|3?4!A^#ti>reWBHI!tW z#@iD}rY0Fr8Iti0PCzmR$%I2rdlpD0wxmf&CN*R-O_gCKnY`{kMx2slDy7#WqY9jc zWLlCLEOk1PF(lI~L*4acPMFMSNi!*>HefOf$(AIulB6WFk#tFH^M5i2$s#0klFVya z<|3J!WFD0!?k9Pr*C+FlEJ!jx$pWK2LL)}95Xr*IS?@cN>36ayNt7ShG{aXVS)D}Ve`6U@ulANEyT$)RT4WuQvo6V|Bg~n` zH>rsv8vjW)H~3G1a#jP$7J6cX(zhbnpJZ#2JxI18*};h08nhuGu^~Y1zaz=6BpUxo zb{;zFE~>dbP>}3q&1Ca`DMbQovL}iD|CeNMl6{)C)7yPb$bJIFNk|SLxt!!ck`qY| zA~{@ylN?NP2#HSnNe#U(l=$B`Vbkwl_y za)K%;zNED{iR2uTlSxh|5j&iw$6q9;*830D_*(QCBxjMFsXivoDNqKit+ixS3Az`^Dt-mY)mHHL!*OA;vay`inS_?Ju4La>f#Cvb5HPKw^%(sx-W@2wuicDO!fpkm}Q;^(2 zav#Z^B=?ZqMRIptM{P3I)8c>QZ1uYL9-5Lf9TB zdz0h|G6^70k{(O)6zN1HPm_E^@(hWE>*QII=SXaNmT3GZd4c3bl9yCNDWWMw<3GtO zBo^}%9a*e)uamq{^9(uPBC#N!*btDsLt?>Sv%fdYRrkL4O{N9^M1%iO!p9`vn($9Z zJ|+2*m63-#13o+ zlTNN}luF;7p{mlFn>$X3^|JIi$7) zR7K4}x+dwIq&?EPNEaiWn{)xvc}V9YomYKEmbSzX)A@CZE{_lEpG>+S>B9ODoi3y? zN|8lK7gb!CS%WB{+8M%_3FIplgi&E4M}~{Kqb_oly2w0HKoL) zOOy6V3(|x%BTZGT@ssM}k7iVDOVTAsE7E~7NW~ioOOh_7{8DI>YZ=m&NS7sDo^&}< zT^wi>(9%~RwZ$LNyy0J&bT!gdNLN+PI;JV->ZH2zqg_ufiCXDeq&t(YO}aVhI;0zt zu1mT;>3XVS2?;hNGTF{(|?j~L%Id&R#wd|>nf9O zt%&6!-IjC*((OpMAI&I9q&t$z<{y*X*nAh#gGhHJ-G_8H(mhFcC*7kiO9jfAJn3Gf zd)K(0QmAtFB|U(2KhpiRzO`=Z6$jSJ2qZn2^hnY}NDn7Hl=QHMO-k3)BlOnnX#$TT zJ(~2G#yuoSYij#H)8k2BB|U-kdeRd~PuK9Cok;RsHNwUo~PkaZY3s56iqK6y_obu(u*`s3bBTobcu#;?VFd8 zUQK#A>6Mn{3Z=`~mtLjJa`u$s*N|REdaWi|S&C?hH;_I;dL!u_q$27z(wj(cCB2#S zmWFw#OcU7C|7SJ5eW>A`r1z2DMS2hE-Axu%&$fVCUefzXA0mB#^g*p%t%E>idsuJP z2#=CJNBS74ZTL*>6M*yyHJ!3OMfwcs(^ex{4!YHd_Wv)<`#kAOMtOnsMHQ%Zlv;>O zysWoc(^s@;F^Ecgjr14N*GWGmeS`FEtI?YV-x6q6eTVdY(sxOv#l_id2YcF;FYkp3Y_q<@mi=FefD5^b|_ z$;Q*9Y?wD2pUgh~l6iCxG|WDAhZNA`E{x3U%_Ya;)Ua}hF^Y*Dfivc$7F@XYrAXP)R*6Un+{>yY_mOOgd-1zAXzkVRxM*>L`E{AB$mql~9nN|ur3qZF%e zITTxw4ajWs|KFuAMYaOj(qzjC8`&~s%PPP4b3I09w*HeXuNGE2tVp&h*-B(9H_jtL zCR?Qr6lANBtx2{z*%~TA99u5w3)xy^YpYh)2Q@xq>yqt8wjSBmWb2b{Mz#Uj#$+3k zZKQ3X9eG0Sr`aZCn+l@Y<&vP6ZBDi&*+0p)P>KXk^8^ji*;Ye6w;|hsY+JJJ$#n9s zHWy`N=$HPO?MSvWnXdmgT|3)_Y*#I@E=75E7o2PlgL@j>i)?QdCEhESrtV92j8Mq- zBir972ap{>b|BedWCxKQLUwS|+!D#NLmO4qOAl8eqPg~zBPFjPN0A-fXscq6HJKLw zGu!{4oj@i(e7u3|L^A#Vqgr0(+u129!Sp9PjqLxColbT+*%>B5H~*8JW$5n_Q~7P5#B~YNad4MDmqn*P67etca@( zUZbK^&UJQsy+J$VGrLjiZrz;hCZpeM@D_u&8oW*5uy(hTJwbK{*+XP^lIc{R>@Kpq zjq@Jm6y3Crw*No7-*Ek~g6zSu%6ix+j~KKgLo+@9lT3sEu&gJ^UM72r?0K@MEmaqP ztVCP?$(|dQ^@63oXz(S2+M2_9y<(JC4ZddZb%XW@(6riH5&&Z@*?C=L6YRvqS%#MA? zbpEfLO|EarB!GWMrb|6!a(z$sgQm*#rs0ub_>16VKMyItlKs}qz#E(YK|Vg&pXB3` z{Y5^U{M#&@9P;s+a;0C3s9fj&Zme$)_aO^&j%d$){-Y)|xAE zD)OmEiR9Cg&qO{Qxvu<>kI_!8$PDDV_|wexl`=E=Y~-_$+sj{3&opf6mCr%GF!`M1 z^H}z|49=|*ROflg7a*UHeE$EHxghyMwS=LZMaW0U7q#q*kuTn)Hga0z&QPXXBgW}j zDIJ6Q{TI1Uu8W7{0lBUJG!lB`eWS;r$X6j> zoqSdD)ig>-syL6Pu0g(LLlHYm+{o7^*JIzv*J*@^e7#+td<*go$ZfSJ-;jJG&DiL+ z3Hj#ao04y)lBIvuVN(U_v1ulGOY-f>w<6z`d~5RN`s0r`5xpak?%=YM_NHgXp+pz@}tQ0aQ-hN zti<#D0`iN=FC@Q6GwS##PX{-UU!tR@j4v|&=9iIQLw-5=RpeKYU#UsbwFTPnL4LL7 zQfb$cUr&CW(&ds-CKpjRj&d5$P2~5H-%Nfx`7PwPk?Ukzc|-xtqVs=4?jXOL{7&+_ zltGFR2G!>t@_Uu1)>bL^lRrlO0Qtk@50XDLD$PoKg#1yfm+k1-r6hk`M3LL%f0t6l z>aBhMo7)hOKVuX-9XfxG{CV^L^w--^`gU7Ybrz2 z_Qi4jDfwqjO&j}vVVqx*f29p%UBEoy8;VKDza{^b{5x`6_Q`G5Co``62lAiEeMultPx^54n-BA56tn?L0z#j1udQ;b6~uBvKk=zOmjk77cK@hO_a zA2g~+;}#Q9OsuoJVL=p=QcOoN8O78TlT%DZF$Kkx>ho5#)US?nzqGycUX zMs)wcP;&~0BBXFBEZ`Sy3a?holrdW$&8H&{@mZeykVmXQx zD8!`8t2M+#bssENq|lu|D$Rpz99|EQ;J ztqM2w+LmHBitQ+Nq}ZNf2Tc-_%BA+)iDFlZohf$F*0<)?N{KJ2he*@!L$L?NUUs{u zR!v5VVsC8@vAOt+y86D&ys@zPe{lfCkrW3~987VLDk-_t!iP{CPH`y3VOm7(E!q}G zsL{ke>MgqdPjR#wL7VRwienX*;zW)n*&{%4g5f7poJ4UM#mN*GQiubbO>rv485E~c zoZh&!*g?LTEzYDkOONc9qOEj_b12TEI9E#-ztz&ur?^1duI^mgn{)`ExY*z&6ql+R z_4upw%PDT5xPsz(iYqCup}30TYOSv*ENW|GT}yGD+D9_Vr9N;2g)OiYH)bf|}~+{NHr2 z#s9+Q|Ap@VAJQcTPDr8uf2VkbLMQ*4WD+P|r}&uS4GIbJZ&K(BUy8R3>iU1}cy{|9 z#Rn8R0#b;hzW=uzDNEhyLyC_yOQV=n?JJ5;DJ03(e~QmXwK9QU*77O7rmz>j#WzO( zRvSy6Knv022SeltI1OJEKT_CaPlhMyFG~4^aw>{nDJP)#&Ft_y<+v1oQ2a$Rc*B3YD6clN+4EQuXTq zVW6Cvat_LAC}*OamU4Q^=_toE@}(4!CXP|gV9-VZz18!dDQBUajdIqyM3XkVinS6c z=M;o;F3NeV#JN=;rOZn?Kc&Y1T0_bOC>N}8EmxIam~sQkMJRL1MJaofi>ckp#VI?K zBa|*>i_%dc;?m;(;wNRB(vv!B#}TiVxmMYw3@ClOozQd+DI?8g!9?hkx&??*hXBfi zGOZ<0+94YvS!-HQu1Z-_E=O5WE<-t>T#9lD$|Y5ru-QC{a%n9~ZiT2eU$!oY@*k9| zP%clo66Fe%D>izXd|{?sxz186Pq~`uvpS_N9aFABxhCaWb%Y#hxDMrdlsen2>6Gi6 zDQq31+>mm6%8kr!8&hsYxrxc#l=7dHn^A7AEme0GwcZw#TdEIRMN}EB_|}x$P;N)L ztLqW1?cGPIhrcPOs&q1?Jq}28El;I9o$@qglUQn<#pIkxX&ZaW zvnbD|JZH3Cl)C;yc^;)62T>n`KzSkMRg@P|UPgH_<)xIDs2N2ofpV#Cms4J8$Q7DV ziW7a5el_JCl-E$+M0qWxxWRRl*DHgt$#A1QH&R-bnxdAxnesNuTPSbUF-SU{j8n=f zmAYLi!r4&nq`aT4SEVg;0cFgs3w-NckS+LzK@`K1}%p`_uv6wsPN5owX6))#6mbe<(ks)VUU=zW=q<542eY zSK>#;_OWKv+fS*cp!|&Td&-yP|hDl`IFN2|HxFTmS2rarM;C(mw>3oAJT0JsM1L( zmF@qjCZ?LiZYR|lOEsC!$24_v&C=jgQcXoQ1J%@)G>yS&l|ebDqq0}PitAdC8mF3( zYF3%uQO#sLI{&AdMcY*7a@A~9^Ha@EH4oJsRCf4VBW*4!Tl|q*X|HNtZNX|j6)Tst zqsm!8J*QfbY9YI|EkM$~vO%I+lxlCP#i-V!TAV5}h7qb3l~3hp&#hdlwtApAo)+O5 zPlu{&exggeQ~_0}48kVmYOWsDic~RGLDi?qs1mAFQ%8Ni$~B8nWENMIRJz(jRZ$Jp zd9)%+sE^6~vs#L3IjW_p?Bg#PB`XX5(&J=uTS@li8*i^x(7+|RB#KrmnQd35TGcd{ z^?%!gQLRR`7S-xhYg#F5D8FbWQ2e~o@r7y~s&&=*MH9J{vOd+OR2vw+p}~y=nl(12 z+N8#fz8TdvRGSA6VvdMp= z)xoCKAykK|o<=mv;ii>t0i`<9pgsZ^atzf?RL4@CPjwvCnN-J9olJEC)k(&1Vm(h2 z+*;%ms?)3rr)o2)z|*PD(A3%!)Z5RZk^`RwIolk=_W!Goou_OzOQ*Vk>T0SBsV*@g z7a6=*8PxYKrMiOZGOEjKiV&^zE2;GGx4K{G|AVS)s6_I$<_6bMU9W8|LNr!OXS`8y zRZ=Uf-$7S5Q$0d;3)Ov8w^H3rbsN`!$k)m{2DEuy5Q&9;bSW>Io_h{<^h8Y^Z(bX{u-b z)?9t~IjR?_o~L?2Ii;I4TD?SNJyZrMp=%d=h3ajpSE=5hdX36H6cXo=OFk&5-lWo* zzt+NpP`yJXJ?>p9d!m;lxwNnSm+F1ZCAV_ulR&NMhg25)D-HfspA6kbhJeqgH29Cz z1-@h;F8URNfa+@oW2nAiFcHX1 zaYnQuKy~<&!FW`EF&LM@@D+dv9H7j#R}aP)guw(1CLEPul!+Nk&0rD+Q!tp6!DNjN zgUK5<%{8SKH<(J3OaTVd)Ts=nWiXxMO)1ken2*5>4CZ1mBZFBi<4g=@9*bvI2D3Am ztrlerb1;~5^j0_-X#8g|j}jG`cPM{;1`dM-7%a+QK?WN38R!r&WLTue87#(N#8MX@ zQd)}q&FL~|Gw3q#7<5MIR=PiW%OGU17K4bvvJ83*a!FzkGw3r&YBmNbgRIHY*r8ys z6oZn%5)3K^gRxVsh$S0}N?V%2GJ0#eF<6eliVXfCw+xmyxI&#|_(}{`W3V!VRT(s6 zeO-4GyE=n4np@4jW}T72+6=a3unvRG7_7@+0~58L!S!o?1{*Ti*n|v+fWamVHXW5_ zNt-j+(sKRN;1&XnzLmkP8EjKi>Rb%AW3VfO?HTOMU|`8Up;Y6io1QDQ^ijltdw zc4x4sP#Eknr0+Er|2{R&VBaCKKZDm99Khfj1_v@YhrvM%PGoQ}gQFN6!r*WQhcY;< zmNv|F1OtuyV@W=m!Ep?ZVQ}pK(vN4LD?dtX^gM~d84ONla2kVC7@Rsbzi=`*eOStw z49;e7mfrr4gmW2O!vCl0ETHD5nm!Ic+-;$_JH_4YNp?5MO0tpN2X`o5+@)x7cemnv z6xX&uDOL)7p-|lIMPFRMnMv}roRjlElesf<=St?@+}tF6SJ8JZeOHS*eb)@g(5J!Q zm=^!l;EnW+FwRZ%-Atd&{7Zj~f2*j|cbh6IaR+@*(|0F*kI;7)efQIMH+}cgcMpA5 zklY!S97*4OxmKzB0DTY9r!xdS)VGHH-^4Z^o`Dw3e+rg zEHJO0p>G0xW9fT=zGvxsj=pi4WT}Gm*(jhYFVZ*OIJzQKy76*Jyh7jW^u0>of9RX2 z%)(E-DJbblIZdBF0ya~Vab}|LE&3!BzfIpK^u0r$jvDmoEdYJ*m69LO_Yr*`s)Z>A zKQ2>0rSD7A`i#EM>HDIPDRTLWJ_-2$rSI!p{@2apP0cYAGDR;@4uCVOPpnNH*Q;Y&Q zGvh3RGYifFIJ4r+jWZk095^=lFVyG6nd@J9IrHGmCpK~B&G|SLoMPr*<~0asVVnhV zbmpJut3+NRXHlFLa2CT^8fS5wC54Z(L}_iQB0F_;8Jy*CZ2c#zU0e}f59bb?^>Oyb*}xo=@Bi2Tm0y!>Qp! zICUHg^^S+*m-0FUnA=U9&@8lY+Iec>yq2XSS>VJbkmRX2sm>2IwTrVIPR~;N4eg1K z`eRQ4l(6Bz*#T!46W9@FC!C$tluUl42r47Rx0vsgt3YC3`8FIlI{CNLA-YDP{C#jv z!Pyt*1f2bFj>Fj>=U5ya0&sNy56)1WgH%!G|IWcUhv6K8bEwV$#dzWW;W$U(9D#GB z^7SrWyDrYrIL8$8!`x4q<;ty=bG#a~TQ-~%aZbV+rt>lD$)c5zhL+CDhvWI3sXwz_}Smn)s&N z&VU7+Thxx$-mN(H@~_&wT}=sJ?kJr*apfAk3stcc^E%E8I1^0ZMMI7MI5rkIW&C$uG3Kj+Moh$!Mk#}T;qWA! z&vD+s`3UDtoXL9ECbwYDTR87nbG)q$D&1R|?;5^`^S&AUKrJiZ1k{0#aXz!8PjEif zR5|PtFjG1N;CzYmJ(^+t5&67-VcHB8MN&2ljrxMb&+__Xh?#0}Ba0lVei#tE=e7F@A$UC-N z9qs~pDo1`9x(nhiRB)uN-9>Phl2hD84Hv_;@Bh0?;4WEQr&1^C@Y1*|<1T}{BJQ%d z%i}JmcBFkZ)gA%JsXC@F0%(%vzKRm+_F&vqm6jUQ>{iEZ;I4t|;I4_gwlUXI0a*fa z*TL;GEg1rI{*Svpt_6A5h5&a%+>MOCap7d%&D>3KH!H3YcXQk=aJRzU^4~IB7pFyq zxVSaks%BldTF14IKg+2WL0)*5tJRj))srUG^Ke_Z+u^oxx53rnz?_M2JGiOQF>Vq6 zOMf!lt|j#h`v<(j-BvhSX8ytRzZD?PaYSNHtjURZK2E{to1T#9=Y?q#@F;9foz z|H=WcaIeO-$-l~9i+f!mR`_-U?mf6S;@*mT6Rytuac`bVU7rPr3hr&V67X-wy`xAi z>Q>_a-2+*hx>y)#D);_7ulsSw;XZ&n3imxA*EAB_Q5^X-l z{S5aL5x_0uzvlHh?w7b<4A{Zd_+Q%j8dv1M!Tk>R+o|~9||LV+C zXUS7bnc1i=L3MVj^O^1(ROh5Rx6#F20M&V@7Bl}+t3q{Qs`FD_km>?d2mRZo#s9n! ztBX*z;jg-Ask``qFx4fgu0nMwsw+@kn(DGtm(kJ{y30{re&AG?R9B?BvJop4MvBr6 zrn)-SRjIC4$QKsYpt_coWz7LT)wN6e>ry?3s>T26`c!wJx&c*>>V{NZsvA+=lIq4( zH>0`<)lL7Ma>HmJ6#O8jq4 zF`}go3nNN*s3ufn6(}o8QmJNCx1-vn+D}#Ef1XNp8>-t5s0)*-#Q&YB?m%_N!a`A3 z8vIMGU8x>HbvLT}QQe*D5UP7n-ODm69s!h+dsEewe>tV9i~l8mf2xO4J%H*#R1c&& zbRfwj52kuZ!Ld?MJ*-sJu|Sfj9!d2isz*^hf$GszkEMD{o@5q|qk8tOsd1F+T?$V&u3B9oj(H>grIt^&b5>{pXx1CFQ9rO)eEWW zTfoM@nCcBwFQIysonC5qnc?MBuduRQ`EOTk38;Dv)oV@cI+MA6icG!=t(o4W)0OJY zI^B|)Pj!UIo64<*w*I61JE%)b-APR<{4T0r>6EE@H`RNnj-x7-IhyLd#vDoYAtUai zYWqJ`@&T&)xJnPnNI4H1K4Pf5K&k30U{oJBe8TWa!%>2z))=Z!8B<^WqWX;CSQXII zXG^i?sOsBWRG&9|!SF@Hm#B^x!swR`Cm6nBsIP!gooJ~0bHpIk*QtI&brRM0jc<>D zt8W@T+3+pHw+-Jhe3$Bbxih6pwt1}jAys_@K=ormJ&M}+)R>P@7J4HP!kswHc@_NNq-Hb5Yayua;|i3qWla!&wbyGn}28 z-2!N;-2xOwY%HkFV>0s^&SzLLoZoN(YEy;)Y8L<1&cc?uh~c8tY#^vDZm0GLAiqv) zOHpf6TbkO+)HME6TUO8ry#=7AqX4xP3|BNJUIpZvm*KhM8g4 z(1w7b1-GHLEwx>Zzn!5i0o8UeT1NqDI~m&izqX6emhW!H++9yqW)H(X4Q>8k8)Ed{ z)a<69wy&M;M{R#0bScbM!>AodP1J`{n@H^-YIjgOnA(NZ4xx4`wL_^LP3n*i zXoP(NqIRUw_6R^zkD+!VHGKt`n*RTn+VO%$=r16R(Dff`_WwsEPPWribeCo!d75!f zHymzwhT)lpXBo;TKt=Z)!*dPKGt`&Fsa+tb>ln3*?DS%4H&eTW+LhEUHO^%!pputU z)9?T5uGfNdmGQ4OyvFca!|M#MH`KSlsNHCIQ(3NCENO({t%63}W~jdawwjmt{|vRe zs69e$puF}8pqjm;P`lUUM;hK|Xy5;-+4p~Hw&kz(kntZDEVF*pIFA`VZuo@ZlZK-V zM;neYe2UuBLg-O6%2;a8QhUi#$5DGOPo?%ewHHeI#ay1+_>%Lo5Y#46d!^*OTFU%~ z+9%XrqxKH9*UQvN)ZQrRH>pi7>9>TSX6rv%vG3aHdu8hTcKU%~UaKD&{jmxZ{_9)7 z)IKx(oZ1)EzBT$w!>_3QR|unJ2>2$aOWp5`|2?%I2Kdx|q^`@?)PAD&GqqndNl$;J zJ{z^)s82`jcWQs>KvVmJ+Mjws$ylQ@e^Z}E2fo@rIy~hIw)JUsp{8!zyk)JmK0WoB zsq6fo`i#_P%2zvcVPjhSuWS5QQ}x-YFGhV1>I+bxllr{I)b$_gb5qygUuHBP_4zHY zO1^5UUTKbls4qf&LFx-rUq~IZS(9q1kwukLg!TpgZi3!^~utQES%QY zqQ15+BP+d*5?Vj{{}t^*Qm?Se}B=z%aFQHJ)|B`*LS|C%P$}WoB3xLskc?Ekc=#; zLp?DfR=(DJszl*Nm--Ou(i3)|uIoS4x6yG#iEXKGSJK-np=IBZx^42Q??ioP6Whgb z*IZJ~s_yR8_sBWab^cFXOiUqoSvUjKZE*()X$`T4)wE2W^orl{aotjoBVlY(gjKsxnE>S z7gN6^=h*3`Wwl&R{Wj`XP`}3bdJ90^?h)!b|F_d?sozBXI_fu2xA}irI_fu;c5bFV zg8D70Vp?YH*3!c5)Wz%_)bFN#rzPE`NmC^6DJAcv{t)$%)bFQ$UvAudc!0Wf<2-A1 z@?q+aQGbN`qlK7RqyG3*W}l=k%{_|xi_}L`A1g`J$54NY`qO2ObYrT#4S=PbK% zCFgllc|nB>`!5-1JoQ(M(Di@n6Y^B!yh?qdo)+@2QU9F!>(oD_K8gA})Zd^!nfjYk z$-G7V?L5a)>s{&}P=Am5`#Gn;!q1Q7l={ciKc)VOCKY*oHWmE^_3x>FN&RaR{>o5; zvpM{Y;kVSk%Q<=O)PJD<6ZL_s=Esu%GxhTMua;Nm|7PKL>JsYzpstgD%i^#6meW%I z(b#A~6>nO+J@LR>0B<@x-Jg#)J)XsXPXjOBOn5V^9l2ZdX2F{iZ&tk7HOzWC|2LI6 zl*mUSZ!Wxf@#e;xN11Y~E9>fcDE8(niTO3Ins1iHAiM?fZ1a!ixG-KH-XeJG;4O-` zBHm(nOXDq$w@5KGXDz(73p+(#>*8&Qx1NcuUmDT*zi~Fg+Z=CWyiLlaP4PC%>5{Vr z-d1?F{-2jci?DT>>fm+oT)YNeRhW1+JRh%)=M{E}yn^CXWtw_PAKM>q44%aQ%S9LOK)j)NC*d80cMRUa zc!%R1f_E6+p#xdx1l|#NI_JkbvUL7vC5qgS#XG@LkHed?1cX<_f4pI(LR>i=g)u)-ldjg zTY$9SSJ>&5cz5Alg?A&~)gp{{4c_&5*Wz7Qcw#wP(hWHW?~q7R{pY>Q=nl zjelFoxdZRc!cNh?cjG;XcMsluc#_>nyn9u^QVUc!?l(IR{fwEdAW#8cU4iJ|1=|i>8b1%kZ1kgKltG5`VaoJYFutrWZvaZXPoJEgRaz}`039`@C^P; z_({EC** zPR-x~_zU6>8sL1B%RtWq{cS-!E&1@O}{bkg6;ni~Z0siv%o8Yg2 zzXtw__^aZtgujYqtFuTk;|s|4*q8NTj6hxza@V82*3nXShLgkkKdQ;;=A~|+K*qwuPL(>#@A5* z-_JSt4g6j3oA?=i3qQec<9F~w{37y~zQqGZ%tEmX6u*nV1AY>l{`}oBT^96!owj zelhbebF{@De<%E%bD2_dSNwhOcf%iozdQb(_%{D9>`a;bTkd<8TKnQ3h`%5H0m8wz zRiG(_9g2Sl{z3Q$PjP;VZ-)__gMT=Ibd@9UC*dE7e;fW$_!r(%@UO9D=UN7yuf&T;kn`i`^jQ=72 zTlnvp<+t(Q!GCwarZF}C*!Z7J#s3WdOZ?CAzsMyA?BIVjz`_68 z%zk6|E&g}--xsNc{r?fng#RP{ANW7v|BC;!3I9?Uw0?+h_sjn8xi0>n1mOQgFb)3S z`2Q5bW>eLJX$#3nU9fGw8*49xn_f}R;f^`Yj)1fw>Z%CgBHXsoGhAJaWnH2;Z6KtZB3K{g}khyNK z8Nu!Zn-jzYTM+mJTN1bgTM_gTXz_KoO!JY&M5bQ;;k9jqOz=D4vY%hNW`w{#*@&^YJXv`-VN^nqa z+0+jqkbr+E!C?bT%}yncDDypv;ADcM2{hUh97AwyE@KvsCm2R>0>O#7`~VW1l+y&K z5S&SHD#37q(+G-{pCU)KdB#-qS)xU7cFrL}4E+>~1& zxP{<0f)ND8%Fk4iw-ek!aAz)A%8Q4O65K=Z0D;&UNpSB}D)$lGU&t4|;z5Fkg+pLl zfQkmSAwZdr5sV^uoIqnf!4rk4LTog_Qv_qCvj4Qwh2^mX9}_%F@S)isNAR3xt!AH> ztBl|Uf)@#1BY2766@u{uI_)Qz694V=Rl|t{{~5^0IIk1DO)!aIGQk@JZwhlDcN2K4 z^yD3a_X*x5c(1UKOKM&=1QcFa{_(-t1>dX4!)u>E5UyW zzO~e^2{ibZIetg*7s2-gzYzRD@FPLFk5r@0PXrqLb*?VQzT(@j1iusfrYpMgf}1P_ z2Y(R!sizWx= zj4HcQ8?z{(GPBWGoW|@l=BF_Sjk%3ECylvOMOska&TGs=V?OzM35|L68z%Y7fQ^c- zQOg^|jRj~dOk)s@1@-k|`I1j#A$>(rzJelOJ83LJL%zPaA&o_K9bR51)c^b3T^Lt~ zm!zTbpT^S4ltaRPV_7Y-6u+^Y;qo+AFk;1$uj~IbRyJJ4a4?Nkjabc4e>y{B4K=95 znuhxSFUxBkQptB+I{&4y9?^})T%U&C0?@GduY}ak#3m8 zXc}A4*oDTHG^CcKe(E%~rqQQ0lmG3s;n1-Ezc=*%?=)&!Gct}Stv`RHVeeNOlSYF^ zk4BS*{n)qBqR}?V&@jq%X>?36F72dtn&}@r8(sY+qF7V9pT_nywy{**{7+-M{3g-p z9aLQ%*pbFg`HvK7?5s@H-Id0{G)Jl9p-Q|cvxYosGlQg9Hst9ab!$agZc^pjbmw?PvbZm z!)Y8(<76842{=tUk;bsx2#u5SvY5&#G)~nwSR1Dqo~{ifmJMl~VKQgZu!p}5d-&V1 zhrbPb_}kEjzbY?Nj>ZKvY($KenOUEvzafy}aQp3v(FIUgae;V@t$E%c<*2(YF z8`sc~dcKy%qcpCg@qaX~r*RVvakBjRdm(ug>oY_7dDQ36v8gv=Atz9GrTkx&pAdfNpmS} z$NWlcE=_Y8(^{71@_MN@mm9cLX|6zXMM*XON;Fq4Y5fH-&B3`O&DCfgMsszVU7Bmq zbZM?hb2FN2(OjRVKL4e;j+Ie<3U;5J+V|hI9`qORG&i)$+{jS>|86oe1ZD7we~3U+LPv9Ic+}dO;f+{Npl~=eQEAjO73r*1JqhkuAwxG_)qg-OFhK!&|HS* z;WS6kJc8z#G>@ctJk6tM9<9|Vm$Np_F*J4mkI}~|Ut)6e1e*GLUz#V<9A;kW&tGWT z{~wiqib{$PN}opabZvK~^(&w>?f);@`e)I+lIGboFOuwNoBW@!tW zw`hw9U+G(Ej-+{;>E2HBPMUY91rgBNxXa3Zx1MUd+(YyKO4@z_sTT5Xe?QF!@+6ZK z;fJ)ARO?~GM`-H*--R}tkJH+Y<`Xpkr1>Pxr)Z9%Ia;eiRmP}TK|f9NJ(|zZe3|B0 zn&V91S@mBfpEI=h-+aL=zi9YUo)^vWYD!yh0?k)VScd>3CenP<2#F-GnT&=?nv+Uh zi~mI_CeyV4zc=mw?@j&xyXn3wXj<>n{F>$mG(V+jL%h285lxN%G(XAZjsA?LexHq| z{sMsJ7c{>#{#OGsW&HVu<}WnArTMc-en<2BT!!WkH1&Ix#{ZG#Pg8WopCT6hO7k}p z_}%*6A9$`&n?y;=gicpf%%E!ZXvFgVros znVLGQ;cSMp3+9rv=FDkYbJJR#);zQpr8O_Dg=x)4tD<6gDO&T>TA=7%twF-4wIHp9 zicTdxt!2M}6nVLhT8q(If|mVId)q-`f!30=mZ7zjDK0%w8?=_CwKA>c%3PMGwL(d+ zNNc63Bv;W9xi#2uRm0T;RY3V`&~j+4NoyloYtdS}bafreab5lAd&~a+-m?F{xAgz- zv^LBGyU`od+LG2LCSSyVTAR_b|G&42|G!Iiw6-#tt&4VS^~tHwv|L&pT2)#Bt(wWy ztv0;8Woh{;srA#a)Mi;yjsLXTv~2$0D(3%|S4^u*E0K1jl^Q3@wMyL{t^TsG+tAu} zsutOv))TaLpmhSR9W9HUXdR$qXlrL$yU-d!Ygaqn&Co7?P2Gdmp6aU7dkLEE-gc_N z--vx_?Pq)q{<)0t52Q7e){#aZMC)K$htoR5I^Ln$+0^D?DlfG5%p-E9@sBb*nwHJ~ zTgR4p9Y^cvNb5#g!)RSf>m*ud(mI*e8MHL`(>m2^>9n$bPNy||>Ke1uvuIsF z>umG?9K&-B&oi_?_!Qm#LgQRiwxGrTmd1a}>oQu`(Yl=06=il;n*3Fk%hiV07+#wT z7=1mh8+2&PFGIa{ZlZM$t($4xPU{w07VujmXx*w6l~->bZ(DcJy4$k2lh$3iSBizV z|3^#u;k~p*DrewXVe5Wc57TZ%AuA zt(VQK35Ks2>Oi0}dQtp`)dAYw z-Y;c7pk?vj?3?7rxfZQYX-`Y*Gg|+n^*ODtX?CE*!*8>V<_ztXdguT2-*j$ds@AR&_2|9 z%VBxXp?$a}6{R@RWONmX_R+MDp?#duHUx-_cGu%`VdI}jTi1VR+x)+6^ZzNVMpnVqYGxIKIe2f3>bIhQ{|F*^d_W8!Sz)<7=fQoT0p?w|gOKD%0 zC(*v#tl8vWv%8YEEdeQgHEo;!w{`xX+o63u?VC(R1a6#SJRfJTHXo(^ z5bcNcq9}5CM2S4)wjZPYxMlr>-nqA*oH7=)N7H_u_88h@X+LEugJ?_q7nHF;F9B10 zmi9Pnvge8>D_Z#lOMTH$zXC^lyy45VC*+c}bqFxsiL~FLEe=ek{Tl7pbH2$>qWy-h z-?r@$fXFNT7Ht_L3LnhEyR`pH`#svawnO`U+8i zL!1A%r_BFpe@*)v^{2Razoq@1Rl@g$16m>fBa|!pN5ZXW|3oO9p9yEB{R{0sto47T z{hJXwK;+$k_Me2(e194LZ*xg+0SKotoOX(2IGxIb(-Y2O#0<#uO|wHd6QK?bxy^!5 z;n@ghC!E*h=P;a;P~*SRa}#R(FSJyCKI7~9KjHj@3k;+ZE=af{;X;JV5H3t;A9)TJ zAzV~zEL==b`(e1a_OXIq(m1*bM7Xr_W!@exOSoL#nT@}^;R>3nrMAWYaAm?ZbfgYf zAslS{Rn-&atVU?@KkvHXnuHq?>f%4)+J@^Gu4}0K{|VPO+(582vJv6Nda84hL4=za zZc4aW&LrI2I9nLX{(lh@J6oG4eS}RyhtMZ<39D)|?-gNtU?qX=S0O4+g<@`U~gK*CQtx|Vy!UG8Ru?DiAzo-NH6o61a0d1}x zNO&aSP{PBkiVh;w_)n;dKgO|J0Oe@#C$!0bk#v;SwsaL)*$8d^A0A714&iZxrx6}c zsQ-B+Jc01U%E4O@4l_JSP>mZBo!kcs~4sX^`*q+2G%KtJnRrmi8-bSeF|3=@T zsRex(@`O5kl<*$HM+ohadU!A41B4@UYlQcimReJeW~9HsAbiO1VP#5^lul6ddW`V# z+||l0>k~dn_#eVigf9_}CVYW#4B_*HPZ5qI)aSp1&lrw1d{(e5>2tZCik1uEi<(+E zKc4Uv!j}mrXe|j->PH*vRlMW3-2Wp_9>b3aza{*b@C!oS|3mnxx}n5pgrDcMAmNwB{7Szv8tS)3 z?euHHZ*toB-x1oA?(lml1>p}`7I{c2g;fg@|NkVE`2QQBbfI5$6?(bO@OQ#L zR8ly}0cQL!qG`>}-*);B(KKq%DwYVM>69M2Nx>AKqZx>1B$}USCZaisW>&>$mdX(; z5zVU4ucO%vXE&TfP%S8bE~2?B-I02#D)SJ@OJR2t&1YEAXSgaUoCSy$BpRfrA}_^^ z79uKt{%eILT9jxrqQ!_-Ct93nMWQ8$mNv^v8ZM>k5;US^h?XZ>mZ;eIQ#o*16Iek7 zt{SJP{)qp!`BUjtj5C;M)yiRC5UnPtVoKYG;G#8&)+btvXdRPWTYI(UwJy~9P|{CYjskU$|0&5){BZ&j!zV***q_8mnKn6WLtpLr8ZGmxqoJ&$gm@*!pcdA z?8|Rj=b5_q!cjzBLCdk9Xm_G*h;|{`mS|_9?TGZvUr{I8L3@6r^M9h9@?t7Vvue%k zO0=6w3P(`-YP1K@K16#G+2&8_sG8{zqP^9b!sfn2`xT}NtpkWoCOVKv92-h>2+=`A z2dljFQY$jip+rX#9hTc6I@~NDk=rbpM-vSrI)><2gH{lay6g!K&8BH{vo=V z=uV4DTnhEufmwgG3MIspjD$rKG(J5Ishu@t^34sboeGN!Fu@bW0D>7^0_)&{x2S zo-rItR0e-#+9j;S^F;3uy+HIP(TgUjn?H%h6HO#~ndns_+XxiBl2^#oNc0~f-TzNi zZvKoW5fz^RDl2d@(OV{CoBypp*y+1Owkb4vUrvo=BSp)+maNe4PM1So%cI=Tgvj)inHPG{zS<8V*@DiNDnHP>I$ImR&(N8QUo}q6ux{uX`hp@xr$Of=I!!u5=(OnUK&MS7 zp%a=|WY{T%Zxlup-@vXaxIvn`$e@^qV$*p5!Q`LlGG&W?0;qO%*FolDER(Aia0 ziX!h$XOEn=T=o>2&R$b-_NKEBodf9XYXbYJ9c`)oOA80mIfTwoV;)qd9;}3#I+V_l zbPluB!|D7x@^_A+a}1rM)l^=?s-jy!=^RJr_|nJ;bWSYkVYwuolj&Sc=M*|;(>c}b zpQbYE+v#+M(>aq)x%so;pH&(;r<6RG&Uth$FfAPdO5+zArx*h0Tw||i0krHIyca{mClWHZlI2_Ljaw3=)5b0(eEiyc>95I zJ~aG@&c}2t>~}uNW$1i1mGBpIzM}J`-kIhbL1o$?gL3Ch^NFV= zo}C!tnTe+(o{@NZ;u!`ks7gFjZq4Xf)NDK}@ofK=nZr`&G%WXj=6=TWXaVDSRbK86 z;)==4uTu^+ZbN{~J>mt4UE+m^bsIeK!o-UZuS2{ju}9+ zcp0N@+8-}x^zwq1(TYl_oUWYJ)f=ZW`S(Yzyiwr{)_G??&7q7L}MdHD;m$GGmW3JJo?eXRs>Y zPrQQ>+YoO{yuH!ew8qr)lQjzwE>2H1=4r~5HMe*; zv0Sic5WhowCh=tAvxwgyw*8;+Ip)T>#P<-NM|?f;`NWqKUqE~*@rA?}6JMnM$i1Yj zAjOwdj@_lQ!>N@agY>32zDyUCv=y!(zMA+-;;VAEwG`^xHN@9hSFs@=uXgPWHxS=S zd?WGA#1{X>zVdG&w#YAyCHuf-6)V1t_)g;6iSNk2Fq|(;5#L38w-#Ca(V7?Er1y>^ zzL)q>;*rD;5Z_09zoyDfL{XU!50I%mSTw1)nmk?i618(Mf^nBA)izW z(j1bPdN_voDc$w0t@bqWSYqA(sWt_*DxR$z|B0nOM?8`EdEyDgFA%?Esk#N!i1FG$ zvfvZHtXs{Mc!l^?Wy%_hn35glv2>?N#IF(Cep*?^+-qOWTKutqOsw(0q-}JF-!4{r z;&+L^Ab!vCdf!lkzY%#f`^e~z4K@A~e@bleU+K?_uUf@l5`R?&K>4fSt|k2qiS&(c zNj5QE`~FY-J+TG<_IpPv$0>M}@@)c|#$YkEEisDCSk2EI_gn$sm$tNERd!^@S{# zh4pSUS%gG({@cg;L|#64o-9tXB*_xm)1;VE(OWi)0m&)kp@Dtg4dMnJsm7k~NegeMa40Q?;aLCTo+dN3sry&ir)| zTe4RE`f^IL0g2Gs5A{&Rji;hFCD}}Uwp5bM&800!wj|k}WGj*e$<`z_5{v(dBa$Sp z`J?e)4;f05I*C{Gmc;h|tC&`WNj6E^BpUza)GUM~QYR5fM$#ckNn(;j<#U_%q|YQR z{+l96ztyDv0*qu^lI>L3#%n>69Y{_h*%A4NRI(Gv5R#oq_8{4XWH*vs3(L|&wAy#q z)54iOEu+1(OK8&GBs$?I(IJ3j->D?`*M6ch2a+5`GL+;{l7mPNE;^4U9imO9t$7&9 z5hkqhUmrjuIvkXl9!+ur$uT6y>9T5atgeVk%W96t=Rug{L^Z3NVWrl|c6tiQxg@8O zoJn#T$#64%y2k3g_9Zz(bFrEvIm_hFCeh%p%zTYSZJtMRK8gPGi{t{ma6~})HvgAP zHMxXzQIbnZrNdulNtYX5LGnDwl_b*cSCL4$t|qxA@2Dgi{7J4eyk1Zb89tI5Np3gh zO(Zvyj3Bv1ljOQq`CCbD%juj+atFy>BzNX!1xeIHl6zDjkMPO8Bu|ozBzf36;e90c zlRRj&&i_l}#rt0*kB~e@@~9@|M%1i*|1)_)g|+!cNfOCulCdOXNS-EnO0zRRty%RG zpt(B9vn1n4Z1Gy9po-) z?yr-)Lo$hEGRYex7Wt*GihXtXEfV|xyU0s#)SmV(iCotj|MT`GvG^}BN+aP%Bwv$! zO!7I&CnTS0TbnhK&(sqQQ(usLMe?N@6fNmU>c)TdiqO<=NWLTab}IYdlSsh-fy8Q3 zdZ}zsw18%cKa);NB92K&|CQuV3!4%reGWzjok3%)q~=wf&O|!1@nZdzY_D= zseENfX!!(?-~xhXZ9&6@GwE)yfUp0Z3P;e`nG)=uWoNHA&Z^yAbKxq%Ntv z|FtFQx}+PEuBUI+rR$SQK{n8r>Ew_;ES)E{$1(DZHQj`Ca}(Q?bhAQ6p69CK7P&m> zR;Hr+|4IAQf~Go}surqb-;>tJ79_2c9zg1mMx;JzpkZ0H8l+8Cl>R0iDQ%IqNki>p zl9%9qhm&?lyQFbhUY-Awrlgs27K>e{99d04rtQ#o<^${ov*?nb&N>F%U^RQ`8C<@>`bpTAW3 zOv<9~e^q{*T~Uj+w-W!8!j{i})BQ;8;jfq)wj}9+q)(9!B|VGuAkyPV4<#22v0b{vs1fpLhV&@Xqbu>a%Jt((kI{_o9#=Wv{;DaocAn!&Par*& z^hDBAg7j8>cr;WxkXSn=ZRv*!(QoZ+(-dnliWKwy;HKy{jbgGe(RJr6R6Og)kjPwE0hxCD?L^Dy> zPWv$FBZVD3eN+@ho%C_iQKV0hKB+Yz9os5_bTsK0Jsq*A)`O}%P5Lb9Go)klKB+Yz zGoN%E*~}I(o+EvpR5$-y?0S*(bJCYcCzDD;ze@TtsRe(D$>}R9CKi;QNcy^Ua_O5Kau`I`g1N*=4l1nM8R8G24uO^Xs zY9H;K*&tPsJN;}SvWv(TCbKzVCN>u(%g7{`t;iN9TUl=evL(otBwL1TDYB(2Cy%bY zIZPkzy*Z3*S+W(#mLprfa@xqs8UG=vUMvjkEy)ANafX!O>%v* zjmb8sOumO~L$Zx36aKDDJg#!p;*}47CEJ8-bFxjzHq#sYyIm zM^pl`hGboN{o2ZeJt}WY+qI;OWNoqzSx6RDCJ(Os_I~A!|5jdnn=IBcelS8&Yd+N~ zQld+?D_M_hd$NAAZRP1X**5z1<2|Kx+o}A?Ym38VJCN<9ACk&;RNv%J%Gu6jyXX`4 z;hDbWeUy}9H?lp+r049Ric)Z?zzKVh?L}rU|4uxP%!0q9zJ4v)zGTALkL+-={mBj? zJAmvUvIEJ6>SRf(R9aaYLPodjV5u1+4mCVX1?13L()~YVN0J>wb`;ssT51^+rEd(m zgzQ+Q<#>4v+3{p&lbt{&ZE+%*eEfNF-9MI{M0TqD#g*)2vQzYTu4fEUlo^`VlDz+A zZ^38Mx6iQ7FAaBAHnK~}q?cYsCbe-n*;Qm$kX@ErllC3$eCc8$rC;+p z78yOY;IEQRB>Rt!q#DFt)6}olx1>pAUz5E-_9>Z^_dT-7WOAjvRoIugMD`BZyE?Cs z>}0t{ZsoG~$vz_cfb2t^Bphm;S!Np9$7G-AG$Z%zw!vhd2~GAn*;iy=kbSAM6q$;M zfJ`>B{}z(zQe@xgTrT_8y!uW(l!jL4HU5+7EiKuPbmt)ZiSBe{Ka>4U_KVs7mF!Ql z-*jq}{Z96W-qK1IGF8^xi}}CN|0rLW-D&9R5)fUB|FSwEbA#^mnoHOA|95AkJ5xTZ zq&qX+S+&D=XHmx_R(EI956a2q-<@5rM*mu`b@Xv`+v7TvZ4Z4Cu-rE6b&Hu&3y>nW9S}A_XxU&nYF{!h{Sfae5Bz~hV}}u7*xK-f4che zFWut}PY}%e65U~RucUjDwZh4CFQ$76-P7o5tX472_jI}!88Mvh876tArs~ynmf_ik z=g>Wu?)gTam*2+H6?J?0S1LsOv4U7DTtfFUx|fQuUILoS<#ewQLOF(XucG?^-K**9 zrcJun(7o1(>kO|~_mpqn|L@*t^i6bcHsTh#w;G|JfH0SI|9?r}k<)bVq-&f1)z00* zqAegBK@I73?k%9}%(FVKCF?km>!UNV94hPDLMoglO&y-HUaXrd+M z{r0syNm1=gGJM1EO}!$N`4&Ct18>ul3+)}cU(3UA-4E#6Z(q6} zYOj{12{~kGLIQjD6Qg%EmCxvYPWLOLztB6)?w7h9S4M}ft^dmd2)VWFenU^<(zoQeMvG^Q@CE&hM$AHQR+UlR z*|em++3Cst&%5c(sa;)(x#-PJ&$fN`=24~^oG&L#V19Zl(ObaygXk?!Z$b65w-CK0 z=`BoeF?x&8TU2l7MP2Gj-0m$-Z;71N+Lj{smZG;Ty`||bqvh2{NcU^K^_EisITc+s zyMp10%8|N~b>QC0^j5Ll2U|f_)tbzg$a<^OtI=D-RMwnEXiJiXNDjNSpJ)wNSe?WecBm2?|=+tS-kwWK2n%3P?o1HC=y?Wm_}b0>N`m$b^z zla8^Q5n6=2f7092%D$K35PJL4+ne4#g@9D1*5rQl_E-6Q8At2tKzfJJ8%pnBGkB27 zOUsH(QMyCv9cD>~(>tbepVYhODT$w2A?F*) z1ZFACSD1S3T%@!Tm(Y8F-lg;|D>;|byVH`cpm(M9{Hy5QV4SNB?Ca0J@+!5|cgpI0kKV`h-ltc7*1o5cSbDYu zR5XDFf34C_O;`W_WinsTFR|rI`ZuEY75y{N`!D^|)BBp<@AM@8f2*BSYxO&NztH=h zo>P$7HoXY<>$?N=Pp7(KM0@Go^v_8Dvh>eH{{r;SO#j^U&qDv~^v_EFY$_>U ziMrei^v^;6oSKCcxqmJtBwUDB{qxX2AN})c@kLl1=&#T}zh+@AXqgV8e=+(Oq+cHU ziVq8^q+I*`i_pKQ+L6Uox%1Mb#pz#){w3&NQgfGFq)tYSpnqxlmr*gxLNEFL<>+6V z{^jXkgZ>rhUzz?D>0e2$-M+VqNuTUrh5o^XCu)3E`d6cWb#+XxaWQ_?IQrMLeAiMH z@ma;zk*k>gb?M)L{`KfzUz0>dEFzV%}dS}^lw?x zTUpZ9^!L&48trJ3^sD}AP8d@+|IqJgeJbG_2J|VGY}( zR4AgLoj)>#g7phl2_+fyRirYLv$a&TH4K{tSo3Ha zGGAUxB1{dHq=UlHTs{JYGf+4Zh2ba+Q|wVFs4KU$)>h3O6^@}DmTd$I$L8{J(u_pm z_*`>>G$#s22~QG^7M_g4DSanpc1}g%G?P&{T{tGwOFk0?`T4?F6wb;EIgX@%dX|JWc>@J&u9PRDa3cygqj1w4B?UIfTT!?}oZC>i zowvK&-sl^ppG1Kz@NN_yLg5}1CZljK3iAABznjH>P^Y|PJ@1pQL3Nui6 z0fje|#fvDsgu=_2mr%QU1%+uSyvo)kKZC++V!qCrXIq`lie*v%%K}*4vXb9K;Vl&2 zW@pFBm;bks!&Ga2Gf}XU|ECmPX-YIQ>!h1dh45PvI=7 zO8yLm&*3bH!WSsaM&U~oEYq)0u#^9-YZaw(phj2jP!G^Z$0g%>VE~ zll&_Rf1>c4e`uYtBLnE)1s^E!fYh(b4(;&SG#Dr-t@>OEA8T|2b5K(}x-jBjGGX zrA@}2eyn_(MOsJJO*nw}+F3?s2g1=5z-rqn-&r2cig2|5$C@kiT}gSZ3}z$n!Njs4ZEHB&@|}gV4V)o!$Z)oUvjZIS|C#*| z&W>|p^BUU)&NXm$g>xdD-QXl}c87B)oIT*|4`)v}d$EMP94qcv&&iKJO3{C*&a5!Z+1vo`G4hhyuc@@?L*wuN$lF(-%nROT8 zRNyp4wrh#t)Zl1zVH~S5R$yHi!)Y*~s!{w_7KD?+84jlnhn^pf%~kn~z&XMiA)F&s z@?pBzqj+hIvMHY0wsVY;EgkxmmHd&;#3#!#^Y3#;1}^=ngpcl$mf3oJnx*hNCT- zR>StVnPu~M&b=(B>QH5y4Cg-QFtS z^R4pzPMYr}{~-BCIP(9F{J*YC`d{JvhT?{Ben-(<-ybM04(Cr40p~9`|H7FC#~l9O zaAq5ygHrpMkjp5}!y8(hH`AjyABqd1I6sODpx9#$AH@Yx>^XN@6c_pZxs7l5XB{goC2WOC(9khrBGZ3#eOI*4O@K9ibTSIx#WQ;E{Ec>neogr zip!(8LN2d}qWOR3j^fHx+8r;hisITRu7=`TD6Xzd*I*QlYYV8!-QYS(xGsttptv52 z>u37^!TcfO9V~8)VjIOxP~0BHO?eZGo1wTJih~uqxsc~nqqwD^gsp^IqqvQPA;N79 z*%Y%@O8yQg?jeIa3U^XzcNXq~qK*GU6n8^0+xbtw#|B)qgbs>(=_)k-FYY7#zQX<3 zyh+<%c!2Og6m5Yh(;tlDAyOWSqB#m<9>yp=BPbRqP+3GVv1W`SX8|aBD4PE_!Ti5r z*-%1&qI^hEvmr)B(pQBw6m9*-l(znp@f#>MbGb#q*28TKR!mt2dzOnG6fZ?_D2k_| zcm#^apm?NJj_PL^ibv)0(I^hjWR-S=2*;v$qJ-mwBZbEcPcUQ_ynUmDCkbu*Zx?$q zil;EPOE?Y1vlM$eiepTWe1`B$;aDoWFTjsJt%9 z5=t{(noDw1m!WtMikDjhP#d@c#Vb*~QSwznO#zD6NWNBho$z`TZ!kgf1QaK-sptts zk>h_9Z_ZJjFsGvBRN(TRf;{6gH z$Tge-p!kqb|Nmap6o5_F8uMc)K91s7C{97~6>+Ab_=JQfg-;2eHk9xTiqGcqb0|KK z;tLG2JTHpy5{fTpn!Lc%_Fd;`Vl68?+g+Y)A=$i*KN-!jZCyo2IL zD87s0`zX#-?0Z?1^8G*>_RCok6hF>n6hA>Rb2y*n8m|AKXkEaU8Ck)vQRIOSC~^XV zBK^Ofk?&FbN17i{{1Ns_ix19EO7b&`zo4jLfALqoM7B0&1u*0zV_m?XDE`GBhwW_^ zinAsB&8n~kiZ1P6xC7zN19wTd^TO45-UZzG;PzlUbm#B3Ov($uT~NxNb14^wySS9S z;4VV5WNHfFE|$^Y_J+Ge7S&B?MRNPV?F)AR+@;|5%M>+nFh2iax`zQ8@68w=qc0@sCW6;gnE z7~I3T8NP_z%4SlLzeIa8tN;_}lL+p8afk=njQ@1h?F%SK_7= zcNpB`;2s6nQXLI!5BCJ_nK8YUfj4>-+>;p0 z>c=+ixF<7-{^|A(^9e|9h6)mc5*5ZAp3?!~H&@ywT+ON2TFjx-UxSsu6-g)qIyv9CgIJ(Te2v)x53rBUH5jl zcc=h&3MUD5jE{;Z<9h$=-V66W#ZESqo+!-&a9@P`AlxV6J_Pr1)x*PZ`Tke(qj35D zH!H0)Q{d|TugmwpnI10R|Jo0(UIDw$z3`q^jf9`zEe=D^zrXTbecm-ZVxi_I$J54ivIJ#Ql1KjHob_iwnfEXW_5 z*6d8kG;sel0p2|D=FK$Zc=ItYZ+>{a;Prsllb`Q-3&2~D`}g=84{xDNhPN>HF_N%| zaM4`9m;__?w!*_(0^a8EmZV$r`oPyaDi*hqnxO z;&}sw%kq;4#x6&i$^RV)Zv}WOGDvwPcq?bJXsZfW6Rs{?1Kv6k))cNKT-&hk^mE~@ ztKfQhaD6E^FqD2Hc$?X7Rd|EoZ7g9E;ilZeYB$u7Mh5e$ZL5s!kFt*%ye;8vWtC~3 z6W-RmiRQSxZQu>*?yU2+rQ4x$dz4p(w*yLx!`o5(o#5>bZ)bi%=IsJ+SNd4dp5T5M)0Pie#6X1=5 zcNx61;puN*JpKiY5#XH%?;?2TEA0is3$rN6^8em=F)zstUYZf$T@LSR(XN1Zr8rk* zoSbJz)BYc7Cd-0$D)M?CQ1C(FLzxlDkHGr`-lOndh4&b|=ixmL z?{Xbbkcuy<#nLMa1K%RO5X8i)Z7xOE9Nlb43k?@LeTAuJVcyGgd zT}tgR^rpj`p`i9$St@4zCcL+@B#L?mo;`!_N}eggd&2j#TqJ*(@!@5+`{OJM-lt0S z8Dm-0&-uJFi!b5*D9u+wegzEg8+hMJ_|8zm_dktp$#VZkX8$F#G*8AsY2GXsl;+EY`9UCp*AZ6_uF|3$(MDD6mVWbQ5rkFWg8(p7Nz5I%}A7vS1uAqI4EYPoOjorHLq=jnZW(or4k& zc}D46A*TQ+osZH5Y-t)WOT+U&QMy<-Ua0YZDIforE=P%f?}C#40-$syN>{18FR6Q!q6dKsmsQPSDYrDsrjmIS7HPWU`Z8vl38@KP459A81{O_Zjgq>sP4sa`|r zb&i=!nwpiSOXlC=pftmf$ti2|Cv$llrFZhOy~|i$%X=t&tlZxhejxl1C3)#C=M$8E zMCntMzEK#8Y7qohv&O8NwVrTPh_pSc;BQNIX( z&C~vdlKg*({y(#c(qHh+AI^fm1WJFyUkIhy@aI!P9RXeX7ry+z8T99c&+f0A*4O{P zP~QW-oWC#UPfgF9!^8h+&F=+&5ebX3_Wb`fZ=OTu3PejoVDNZ(hu6#RbO ztML0vvo!nxb4nr&{{ja7vhbHPJv4zbjpP;KuMU4D_$zaPqFbI-#9tNuYFT|M_ch?J zEB%`A*Ww;3+FTp{I+@%>+rsUy4}VYi8^GTZ{)X@ei@A|-5d4j0Z4)8Sf0lkTLuvSF zk~As|OS=_(Zsvr)HT-QP41vD`{B2eK?S$JKGNB=p?3e}N?+kwrCD{eOo&RrjXy^YM z+WF7Sw~I`&7yLuS+#CKr@b_h`tu`><{e=6&KOi@IApC=J`Cu|>;ZXP<{KFVzs>9(I zq<3;=QF=G$>-=Xj{ah2kpA5eOe;oV}{!#EF_$~NV_%Zw%{CxaxS=gM&Z@_PM@0#u% z`~?1y@Kg95_-&f)GKc16&{tqA?XbCGkA^=6{&4sw!#@W8@fHPtgiz=I`#S&MAIT)D zXZR<;KQWg_iFuN6^jw@%q&XG-X<0qPKb^6x|1;o^g?}c4-4dQfpHpzh z3;()2mi}MXCcwW1{zUjU!RPm1tZnPR$fy4|8UC&C?|^?BeD)5!gf8Ju`1iq|B(l!` zXR5p5-;)#W%`9Yh5WdC!1pj{cZ^C~7{wwewgg+JjL-41_$iwg-QI3xa9}_;FStDAL zwz;tX1bq2+|4H~-|6#uTj0^rVLUjS%dUzf_{Xcw70myj?zQ+IE8kh$EHKlqrzlpEI zp8@|3Q%cWIz~FNUDAUN=Tkt=D|2F*h;J*WZrf!+7|NPE19IHd#!S~_Q^XE7HLuix^ zUxWW{?w`W{0sd$3dDI*H&xKzIzcl1$^345f_}`dW`1b#g^c(QMga3UdOaCJ?>PG#H z@`CVxfp6aXSNLZ3H^!gh$^*>~%KYO&bt4p9i9!3B_b#u3 z@_W4zHb;wl2#0|KIZZ;%~sRQNJO| z8)dTe8>6hl!OH3a%K8g{@@6Ox&h79o08nNl5kLD20Mpp{|J1Mv*@{_tTa>rsu#IK2 z^`CuE-T~!3P~MU6mC8Hubx(O`;VxXvXK+`PcjGIe^6uG7BBCvKm-j?@FWK3f_U-kD zAZt;K3B^3-0nET??A{%Y@+g!GD4&3`qZ%%9^{K4! zf7wI%7%t_NODOv&M;wlp%P0pZS9nFXE^0?-mqQASvfDQlN@ljmDh zrGAtX3XDyKZInA)t~aF+%crA!Im%;DHvJiP6Hz{sx01qG zl+TjD^M53qEj$P1b92pkrpaZix(h|Ph)P0eTe;WmLE!>9k z9Vp*Uf@!Rw(yU&`Go!mueh}rmQNCaLdr-bt!hPhEIa#Q`sOV}m1+ZCOng9QV^252! zM^Jv$WRxGvG?J&F{1nPl#pLZq`ANerfx)Lyeg@^2P<~di&oPz-dmiN%q_M-_RC1DE zM){RFL0#{wC|iSk4dstfejVj^l*E|RQGOd`9gV_-Go*i0_!cc#Jn0f_3!Tf(# zw?Cl#qoRHi+WNo6{=(Sqz57jVHM?bhAXpUTKM^c~@?Qwdx6e|G`dc^~!8|Dc!$!qc z_pgNC5t#q)k3g=8g8c<#f7%Rs@a_Z)AXpf|f(UxDLhKVx^F_fzl{2)htT<)e)?r*foV~ zWl;#$&dKW{*aX3P2sTErzBn5wpXT7!R83IM4 zlI?b9sd#_O2c^rZh5R8RNk zi-27Kg3}RfMR1%fLT#lb&$Olud9)Ujo z<%4!Jd+^{E;jMY>?clR{2ZDQ~x5s>vo=Sb*8{9p|PR_p%!Q@PdfX6H#xL-cu0pWw} z#VlWXiH8w9jo=XkQxH6g;BlFKEVI)!%j8oLJRv*!{x{J0zgzNW5WI@uSp?G%Jcr;F z1kcNe#{U7w{|H_ZYW%NMbK6JonqprU${PpMC3EnPV1{AFNAQ+3Z*!~|yrbHF7r|Eu zW+HeW!F#NE-5mr*_!z;5;;0KSeb*a&g5XmGUnuG`1ndZyici^>nV={w5Cz{*(~bQO zmFp0EkIEJZ@|VBCj|hH3Weo&Bqp}!+Ur<>9!LJDZM(`VVG6cUHO85hT`TxHdoG=@~ ztV~eUY*gk!@DGB2d5FrGdw9u~wlXg{6oATnxja8AJt$9@t*8Z2Ss0a`dF(*jveUosJ4d3jv~Yl- zGF^sz>X$`jb-sG8EGJwZl@(-vMd3=qm4&MaR~4>i$T!r6${H2h|Fb@ad6l*JuvFGY zWgS%3LuFlN^y);COvuis0^m^#lBhE%m^x5 zqH-Q8TcI+HH@&j8a2r&Hpi)3(TU7Q(Wjj>%MP++b_CRF^RCYsUM~)~eI|+Gy2r9b> zcQs@aqGtC@$b);LvX_kSE!^jSW9<|OCPd``R1WM$(a1rl=>NYehbZE0}O7Ef)pyEj`34NiCfX<4?Bo$P`xk_ub-A1K`N@35k*FLk{ctjw`!T4D$mL_DIgY_@lH*Z10hQ6HoT#W# z!jt9@6g(M~Q&2evl~YkUElVi9ZOtZhb%AKg(Ecq5xZb#)-RBq!wEA!Raez3|NbAqT$qW7-w)X+Tk z9#kfyaxW_P&7q0&A5=IyAd^WR$YfL=Lgfim9!BL6PP=T5S$UNEH*APlc?^}ub9o9X zQz_eX#Hc5^BgICNc8XEuX;fZDg^NGBYMz;c%5$hZZ+pfhzaV^3_>v*_l2u+oWg5?G zvP|tnCL20dUPFCXR9;8*dsN;)v@$Bw5nA#7i_m=C3{<{BtjTnb??gnbY$f^bQC)NoORw*KE=^5O_>{NEqp5}Brpc8krOhJB4Ap&!Bl z2#vNh@4hLemxW~z4n(*-!ezze`hT8k1uj|84!Z!85w47IHH51uA=iI0GQ!mnu8D9B zYOHaxkZU1aU&7i5*U4$?O2Z|fOk;>}LxkHP+z6r8dBQ;mH%7S0|8h1%xH-bXRNBvu zz+%EJgj))^3kc!XhDJa*1mSK7w?()k!tJElUbsU>$Z0zv+*$fvREM_y&svqdJHkT| z?tyTBggpNlq1JywuKyt1C%3RKLN5L=74-)wxseZ4l7kQ)%twsL4`EbSJ}eis{vUGv zA0hYuNN|N7!cwmBr70r}a!mzcn8`9;MR7^OWD;V^_pnao%wIU3>cZm?U<5eSb}T^%R1@qd4%J)ShS$rBOYgm4tX zvk{(zP=ow%G(yYh6mhItbpC(0_D)ywF$l*YwDlj}YlOB0WH?r6OF+NVBhkJo&p~)K z!gCRhM|d7WTj4RK74-s^gz|+5v-Ka|Q%;tQ7Z)H^XxwswSWQ2Dhyica? zL^uiIJqYjO@oOyJ-6Y$d#_(QRGo@kodjG?yEDJIp5dXnUiSS`W^CNr&;ok@!Mfe`V z#}IN~Xy1!gML5NFOCp?#a2moV5I%?SNrcZJd_;>(rh~HnH++_LMd5jbFClyZ zp%#D48<>M-)-NN}`j4fu*9s%|LHH`d83=S?Xaij&rYfg-$eKh z!nY8<-ObeU;`P3Zkc&UOnxAZyy%ArKS%fx!cY5-v*aHOKVfY!_*vfz ziY8=;@C$@rBK#Vm-v653Xcw4;ZwyUFXn+2-s#^8;2!D|9Bf?)0{)CY3i?_ae_kTq= z3nABkbm4aGf8_F?2>;6DIf!sJ!haF|!yK*CvAm*r*dC&JSr3r~=VQ%eH_@KBs0aJv zXaV*V(SnGUM${8gA4CgD!@mGP)JwRCp@c;dEyjK`;>%xYdLvpwnk6$$uJ4OzDG~bR zX|>eZwKD+GGKw82Tvn)FkC`ryXoWo0iilRqWL?oJsNRlfRYb2KS`E>7M5`kji)al* z`yg5q(UyqTLNo}`+KARiv<{;6IAV#`<%QdWAVg#rzF{tJM7^RAZH#CzqD>HOhG^3{ z`neKrZZe`Ra{g9`_&yiW)`+%2G=zF|B1BzW1}XG zuQ+y!4o6f*R6yipLoD%&h+M^bnG#V6k>4d`Be5tzRN(-O8HI?VIkAXph>k;4M>Gsk zjEEzAL=8ku*=z}uIef*o5p|>=Dm+4Xt0E+1+gMTtJWR0DL=wjV0JO9n@ z_}PfgL3BQ%b9n?GHRn+<4@TL_b0MOOc&`;p!A$X4y9Ci?h%Tjzv)e(<G?N<*M77S(0LA996F4K1PB~*P>+o+bQWYq=23aTNh4OF@QFHIHI?)pEfb!lQl zm8z*=OUOZ{lxdbw%B&1SQ9UBRn@37NOn4NkN9%?T&tfHyK=o==k41H?ILDzn64jGY zJzl{R#5pnJqdH2;lTaN!mxWWLJe9*FUYBME)zeY6{r}ed&JdoN#Y#R4RgLhg<51=L zzf$oP0IKJrdLEzIsuq8$_Rfn>F{&4$s`VcuGj@EQ>Jn6K^S|YCnecL<9RZz{sNRC=&2z3)RdK8EwoHlY9jLyA>Yb=Q ztE?xXdKapXpnA80_n^uz_)xu9cps{^`JeCEmEHZQK8ULA|Ch!FLRH)UZ{&yPXcT-D z)yGhM64l2QoPz3960BxO<||+ZDL*B&PXJ7QCMP_Hs@0e|E^Yp_ey#cJu&_Wt*GRA&qSVIi&9rm4*%r2j`v6Z{(Y|DZO1Mv%OKVi!cM7ivB8 zgbPWzu%S4MWP+57p|%8Si%afJeV4N&YIYYaqduthRVuv#pr&8Wq4P&=KptF1w1KEC zn`sogJZhVuwgPG!ptd4vtE0A(^edybN|(kQR|>Kl+S`q?d_qkr?RH~ z|26LaM~$BbNH`ib?fs&nRBYiKsn_+9=c>LhU5fPC;!n zYA188*ft2+q1pBn*G@&vJb!=jPe<(m)W)E86KZFmb~$QiqBb72v8bKLN40hqYC8P6 zro*3W=WxnUv+@6bS#lw2=c9H3ANJaX!i&0(dF^6ysK0~)tz9a-j6v(cYgfSL>9s5K z*sD;xn%=2)jqqAS@vkF+`WsNY5j8Ch)h2SxX?jDO2+;V=sNIX&EvVh4;H^Ub3nXf{ z3-3VfPT851S(a>f@E(ipt|yRuA8P**e=_x~`THsOAMp;3n2wtL|Kl6Hcf;&4c^I`v zSOB}ThUTtgfb__7ZAOp!Q^5T~DF*3~Envz01Byw~2r4S=74U|DyIh zy)kdo3#h$F+5RtpK}`W{Qd4_{Q=8f};j6;egs%(VKyA7Se2+=m4A|7H_9ki{qxM#J zZK3uyYVRoDcXQ251>Y0CkD3-eY9Fc+KH{}!%ks5PP@f02Pf`1fRl#fg95r*xU!e92 zYG0!Eja4IRU!nFj>(hQ`Es5HB zL9PFgGYhr9MV>AENBD0>W0Ly3sIQ1RQ16AhEdjlO`uwObhxAKWhL+g0Myk5*H_3aNV5{^>!Q9g-AJ8X0P3rvzPg0fSpW6})#?1DSyQ-{ zP*Z@qrU2w<{9j)m^^H*9K!gnq`D5%L)VDx=W7Ie4PU7mDinEz;uu$WF4W|{{(ol7^ zHR`*dz73mweTZ<|?o&|T4)yJ&vHd@KF6uifxRY>aD(x?FtZDJOc0;3r`tFEdMSTy% zLs8!oaU1o$5O0I}-l)Hg`aYW2#11?2jIG!E*;?&50QMcvC~?h7&*^)l*5q8^~0pl-$E*dBFu0jNj9s<0;H_@56r zW6l2?Hc@X`o1|WddWw2mQTG1VYHXH_K$rMZzD*51viPe%O~)bB$5Rz=;$ zD3;`Q)bGfy3-vptnZzj8%-ss!!yuVf&-ZZ$y9I@)8|QuoyVvp{>Mx-F5bDpM{xIrK zqW%c#kE8x*Zh=ccIeCi7s81C>L4DWeQ_?(5joy8r{w(UxN%=gL_M!8_kP@lmhY(H;NF#ki(_738CP=6Qo-%y{4 z`ZuV*hx(_ezpo@8pswxKDhcWzN%=AApUl-ZK9llu+GH+Yp#G&f5Y)dCew{fJ$={;> zvpC-gzZd?1y7vDw?N6r3@6IoZ{WWV;k~8~%p#Gj@5AhC&`AIM0 z9fdm~-kFV%nq7puBHm4Acc&?fVitSmoV~=^8}UAD!|}ds)yAQ`KjMQB^W$G}4(vwJ z^1+DpX>fdK9?MUF5g*PV3+W){$GnJ(h_(Me=J&sdOG0%nF~|Q328b(j$|jAz|Ba2W zkALI3lrig#MjD8@|5I|yP&Juy5M{C<3(%o#9xpxu@mR!1B0d%IFvLgm!H7*CLXK}?i9*6iv#AhRZ0P#79Z$f-7;!6>q$Ah`z^9?0j zfLMP79ABj1#nfAO5RXTENhV8w8REmivDYUnkUGJ;pbf zOg^)oDE*C@2Jy{^??ilyl(!=0vCoLr1y~Z=xg%#zLOdDqT~gjHn*J0ZzE?8;k0WD> z@E^qY&lP+S@f20yL&Apg8n4Em z=N7(@oi7n<|4;n2F%k0wD#YLBsq6@dEY%O3dByVoHa(1gLd;AN|AL0q*sqBHM*JJ% zKM|WN&_6%gBVcLyaQ%gN7Kdu~7QhN=>-_O-#Q!4xhe7+9*J{jzhMoMtold+XHYIP& zhsHu^%#X$b#z8}W0XcjvG!{goCrueGv)@=4jYZJtMN{@5kh~}wi*;X-D^oOjqftg< z2{blFV@WhtK%);Defjj+O|c?1ma-=Zjef9`bL>%~yfhjEa(Njv268!$`elX73703q zp7F+tXbeJQCC;!KE2E)*^=+(z#;PopHLAvHXsph@wXue9P4>2S3Dm5uGOr_CSEv`k zjrApOAlwiQz5KN#_A{GmQD|&}MhOj$|9Lwao1rlnjlI#>9E~05A{twuu_YSYqp_8O zTeD44zYQ8g=sgbM>KXqV|Vd)Mq?N8cNOmTzsx<**pur9jlHs!1j+lL zaWER@|Fx3P*bj~UbNK+-JP?h8=GZ~w5Hwsg4$V1-p>eqKDhQp7iAIqGmfXvj%8UCy zxk6%1!hCfjV1@8rglN5kMugVMXjIWS9gP|qqtU3NaV#1!8Y9rq;J?vCqphlL@d0ck zlKGGDe83wWG>$@JC>lqiaYUw6yB)>{UoV}-KN^kUXdJ^2+)QtG%CLKDjzfdTJD@QV zjpJEb=5hiW-2W+g6v-xAGh>t$_*69P@So**gcon_X*6Xw$d;k(-!L0v&^QCli_ka| z&Bf6ei^g+koQ1~iXpBSSYBbJ9V>}w?@R{NxcCPR|A?G+~Sli?Nf5~R&;!GBShd)TT z6phQc_CgDn3$GCB6M)85Cet%Cu0g|U`&u-#@?&MTqVi&IK;t$vCP<#Bgf|Lr65cGl zMR=>B(TG+9OnV0!_bcj7;UqNfl5n^19zzNDqH$j?PnPCCY#1!?1HuP|51}zt!o$Kx zgpUdz6Fx4SVra?HctXJ^g-;2e7IOb58qXT$xtRBOAB`8#FvtEP8n2-75*ja)kX;U| zdKwz9GHBIedTL%r<6SiDM!%!%rpv76dW{*9-xTuwI~v*rWXWX#jhSe?$K0*KcQy7n zn9UE-_y&!S(9mZ7#>dL&6XB;qO#vF50-*7Q@Jr!WhL#b3tod)z;K*NDtCMQ{phEsA z{7Lw;@E4&re>Q$InHE@kf1tSl8h@hM1C76Aa~2x^pz*h2x&M>)4N3l&*qlc=uMood z(43zaXf$0W?KBreb1^h~vTRKo|My4J#{Y&k{x`JozoCu)vzqDOy^3aUG&e$X2{czj zb4fIpLbH!7^ksoq-YL9vz<4g4w^&NPL9YmM>2^uV>X_ngjxb>4wrlknj^Xd7UMWH&q8w~ znx~+7ya<{OG*9I4pgBs&@xQVjjpoUjoNG=+^E7d^|Fbzpvd({_aq9xc&f%ju4$ZTf zH7}F?A5A&`rksEC{H#=HUZ7%JXeiFbXjxs2M{8a*FG2HNG%rPS3YwRpc`KT7{>>}U zyg_&QO5s()tA*DHuNATvK=XP-_FvX{H75usqDlWR`6l7bXwv_itTNn&=IvH&73>Z) z??Y40zd1><^8Zcw|K>f?+{?7x@=r$dVKf;;lj}cdJ|KKBCp^?8GwKmVJ&LBBf0NEX zr%i=@8Pt3N%@>r#lW0DrntWRLjPP0Eb3zSkEx8rD+wxyRb2^&cE&xsa|6_BS$m|8s zd=1UlnImO=s=#}szk_eiP{H05z9oEH_>N&#NHk}n`3;)yq4^=2@1ywv7u>QPxit6@ znqRY1Zp!~R<^P-V|4sS-ru=_X{=X^z-<1E?)4>sY^IJ53Me{o}zvmToZ^sWR?TWt&eT035 zI{&TJPjY|5ZXqS0wG3Kop*0XKE$_6J6-_>{wY=mNgex*3%dhi4DXgO4s>0QTs|(i< zu4%~I)LI)YE$_6}K}+NRmd5`rjsII5|C5;`T7%Hq7p;xa+6Jvn(Arv;wkcYhaVF9l zEZkhUg>XyZR))N;3|W&y(Arfc*_KaYYdhig!X1P=3U?CjEZoJAC1G-X0^H&!U})_j z09twl+|n!HmM1-50i)%UW`qA$fL0}2Az@yYoDIgN09CY(MysY^9jyjhTK_SE zwfR;Pt^DKPR)SU=t(0l4=9#>M){$rp)r~%aH`<~M*^q{zbyPP<=5Vx*N9!20jzen% zTE{ZVM(kELn;*4CGT60w0$QWc;`%@5txS6oTBB*!`1VAz-cCX5TC`3@>ngNPL+d;) zK($UsYm9_5gl7uJ3eOUb6Q0dVApab+?E5dusvpx_srxSf-=hCVi?0CCvMyk}giC~% zqQ%93&Q)!q+TyD{x-ymzCrd;WXi^XuT%p>vNcB+4{d_Ve9`{UNg{oQyjkkMT_76GK%uMNR~ir zCR!i!FR)whq4hpmAENa^_ag|lG421f?ts3<&VR5c;#0JKL+dlNzDMhGw7y2`3$(uE z1_Nt*_D;O@725{WeuLI`Xno5E$J(S#NbR=To3+*tX#IlLk7)g@;7@E$BllsY@pk{p z-p80n+e7p_lAdV&f!050{fX9W5&p7w;%Lnh{!OM{k;~M-NakT%vZ1M&O6ElZBt4MK zhh%;-tt9sB*jY4*{TA$d$_*@-WoJ)EvJjF*kt~d)7n!!iL<@`1l$AMI3`uV!i<6u^ zV#cvLOqN8lHIhC^)4&60l7W(!MlwJGH~;X*9G6A10+QvV=XzbY zcuc#Zlq+Q#B<8_B9j?7)9+{z0Pk|E`@inU+ef6y@?dNVNIC%UK`EU?g-MNH#>W ziG+=i3_`LolUPEfMY3sbVY9icY5#w+1rn}mnjXnkIe!~ACz>51+*Y_9lI_W)eutd7 z6NcZ4WM_10NOnQHgk)Ew_afO1$vH@NM{+ijJ&>G?WKSdslD&}Z%~oOi8LZ(Y`ykmD z$)QO0Lvo<*j-CH(_vip}Y<(s<2+1MR9L&%C>;_rEjyV;{VMqcbha>Tk6p%R7+pe3W zXaW*f=m|@V%05v{$`rbC1xXc2h$JFG*Coq#AuS|zrHzFRVUska&5D5}MKT&m8_9`C zI!K18W`-g;BCn+*DVX0*j#3oY>X8gba!g)(BcwSt4<3hPWG)}CC{6)PgJcxFO``F? z)r>7dnx1X-6eMRMu?jhjZ8+NklxPZ&XbO;U3V`HH;aJuxgX7rdHP@pZ>y(pokr|R@AYrlo$F(i+( zy2zO#Q&WXcAbA$algxspdJ4(Y5}xTU)7cm%c}|+=g)azSL^4gnOGsYMm`L;$nE6sB zc~$tD@b#Q99qBzt{)_YgBr}k%g5*skvyfQvzD4pjl27@DB6&ynu5cz2`wK8r+8;sc z{e|@r4C?QSl8;n@A0zpMu~z?G&SywI&*d+~{}PG)`Fm!;{sq!3e3S8!e23&mX|x2C z{E+K^LPCQ``1ig@ei8nPGic1T2bn2n0Z11V_RNzkjC2{Ky^t=7)YgC0-k4-DqyvyHj7S1=~h6_Ku_;L3Aik*+Gu zYDl+2x;oNLk*myxToOOij3fD8ti?o5roFH_SOgjka#?o&xhpFIZ zNC(Tp=E5z6tiWz^R?F5%w?Vp-_(O!-3bzw(k93EOk90@V$imJ@_fYIELd_b|-H>wd zPmU1jo=Eo+e{bPFxt)ELYCqxrk)FVy{me!4o{mC#l7!K@ z=47O&(4VKLW*W(-Bb|VB4AQHSo`Lj2q-P=>hm_7A=~*=R|2EG?dXDtx(#4T*o>1%m zsfO{^3#S_Vrxzo=66tsmF5yr=y)+x@BfSi%2LEY3_}3Hw=~YI~IoBY)7HO8tb@?UV zkO``XiAZljdZX;$B)pl)yLEUgWtQ+Zq_-oz3+WxX=1!zM|A)bDUEST4ZMtEj-1I)A z+*pEiGSdI>1256bLA!iSMQBjFLGkJ1Qpd<^O1e5FWv3eu^3A(%dq zYo0{8Ze7gdax@^Ze6^p#wmCi|~435)u=f_i+q7sXda zNM{JO_@BPT(M9^Ux_*n|5)jgNg)Juj!LZJ@m<+Vi2k0NV3+?X-Jj z)kvG|1<{uCr@Ro_3vWzLwI`-&$ML1O@x~Y zH{+&pDhH#zc`k2Z8cy-rTcN!-+FPT&4Tq7es39VA@kfGjwny6r`C9yGYw@S8Zlb+2 zE6r#^w09MMH{tHWJ<#5hzp?w(I`*UT(rkU*nga@L1kc5MU zhX@ZfY#1=Ki}v(wxJRp!RM|`|Bv=Cv`ZVm3Bj@_1WV z;Mzj_65*w2Unb#l;T6Iw(Y_AttN6dtWL_=2MtH3u_4Xgr?d#FLAq%2CAt&F6jy-NS zp<~bH&1ipv_AO|Cj`po+zl8Q}Xy1?a?P%Lmb4TARpXHBtZBizqeHYqV|8Hykzs>c3 zwE6xQ?a4we_mND^186^i_Je3Yl-V&v`(a(?Bf>|8+6&Zv9PKHju@a^liu@$nECbq4 zp{?N<| z{|aXq=K8nLep||S(4L9*yP2NI!JEmU~oweA^ zD6h>ZYj~Y?6w!4GqZ=qB97cjrrg+?Iyxa8OyQ_MrU_)Hb-Y0bh7NW z6k#jgoep0XkV$z6Iy<40@Bi;?hmOAg?d*_o(Bb}nF}e94on7+M?uyQCnVf6(5MfVr z_L88*|Be>_nQ&ip_M20FbPho0Fmw)7X%C`nvLR^aVBsOcLwRYYw<^uP$?C8RKu7++ zBmduV(dqhsbV`c#g=KUC2^#-*Lf$^6jnLuVFq7Fgb?O*81)Uf}i|8~kbOUsn7`i?> zEp)y?CqZWtIw?9=qSHp_9CSM9Xrq2-s4CaT;MhUt9ADz)cZMo^3g3cHPPeq6RU-IdOlzCnB|LB}4 z)D)n@DF8a-gl8Kn3E%%pI1iokC0vkeE=1=dbS`GlmSJr;-5D>uM0lx?TY%8HTzG|H zo|gN6(79T84La9KxK5}=SH|9;-~@CgqI0Wc>jG}l<=>oNzFq-$YvwjZ-7dTX9lrm~ zXi9q*I(MV<7CQ3(oqN%liVpq1Vke`M3HPJ(5IPU25;*=Rp<81QOZkY9Qvh@x6Fx4S zVwhWd0-Yz(c@-V)|LHu9&hyIU8Fbi9NPdoFllk!SD`0dq1?X@JfDVrUMTb)Wbh!UN zx2!Ipqb{JsDF8atg_;6%W=MWBD+xLr|D*GcQ2w96ndrQiTYDd!577Axoe!1KM_ESb ze2mT~x%?@~-Ew{|+84qvgz*&qDft3F-nm zzoBE-^0zd9pz~*L@Go>`WipYqF~0aeu@ynF1H0Xw+1Z($?cJIA*c}+Ch#fgVBewEZL-R!R;KZf$5^$wqD)qhPv z*Dc9-3Gg7(u zS!OBYvxVm{Y1gN@ypj%bzKDyQt^duH?f<0qMG}_8*8i!*E&zNLx*hg`8ai zr1lNubpO{b?koz~aw6A8E=JBi!1w?qHks!5*U#)Pn;DrrR}Fg}a(w;=xz7F%au*_Z z5pvq+$!QBHcZm!xW!^Lr=4`NCpB%FfW z%ObBBio7a(P53%;dIZ!|cFHi<&K0@v* zb=-91J{I`|IR=068LGu+LdAcc$lL-#?n^_-XCn8bBwr(^hkvO37P;@FohAHU_=91V z>nG%`eSSvHdeDmW2Xep2=2ziwLi*3_|I{J=63!O>ovOqY{BsKac?N&v=bxK5zX0-! zBG3IFS-P@t;Yp|MThk|1A}JGdQ~_Y^ZH*fdw_PA|@^**=k>3q@?fmC=M}CjYauD)+%53ibKl1zNK>G^!6YB8*9^!y`JP*!}I|O-s z%sD?4`7HkD4?%udc9cWqkv~DnW02SL|2)=lk_<;KHv ziO4e$%_BJl`7@C}75URTLgqak`7`FRIZLiA`2U^?k*?eA>Y~m zk$n;Q0D1p^4`=Z|EqNLFi;=G&pCDgFzM(8N4>I$wxntcBVlZq`RPVpJ3lP; zdD5OQygX0D z<;dTQ{KLrKhx~Y1-p}kd{pBA(enMt5QJx<}eiHHz&2b|8$(~nf61@*kwe$WP12N61f4xhy{+r-x64 zGniz@eUALs$bTW>m%^`vGilJV`3Cv_kpC9>*~ou~{13>_VlkNg`>Z@aBA*t_rhuQ3 z{}p*%R_A|74KjP(0_c?F59Ag9^MB2?VF@_}ApZ~Y|E9TE9%nu{OT(ETj>5a6iOg95 z&VthR=oHoA6hO`_oC4r13TH7Tx&I@{5^$E3WT{j_q`js9XW3K;rzf0VaQOUZy43(@ zc{si4-@?ArhtGsKec`MJX9YNG!da1)6s{ypxt{-YR)w<~oYmp<5H78Yxkh zwaDpVZ8+ z{BaI}GmPFWyZtP?Ewt?3hjTcbY_ zq&l8G%UYZWN6(DeBHTF{&Z!y?r|?)D7^ku6Y>*gQY1wOM!Yji$3+@+i&W7_9oO9qj z0VfB?#zr2_MQ|KAO*k%`qDEZ-j;;SyWe!UpP6dvw|BW;F!wI=1?v%L=Zf4|F5~^x& z>WpTNO$P%hB)85z7Y_ITWfQ@PMYK!rbhGfLV)t?LN2>GTWb1$D!c2QHoNM7+0!NSZ zIG4iF^FI#b51cFH;Yy*_{}f)$*61|O2zH`99B7xZ&UJ9E7r6n>D3OtHZd6@v65h<( znZ2RiPGy$SaPEY2E1WyvjDd5T2JKjutuvCxsj|1HrR55oEprzf%X>E*ZtTFh2hP24 z`0zgsD7jxa9?k=4*|HK&qzyeh1m|HmTKqecspXZ3wnLpq;5?dfn*yw9{*oCji!FVfnQ)76zJ|L2oNwTE!TA=>KXAT-^DCTLaDIZL z;Lq{-1Dqe(^44oSmwEpej?Pe$xl;g~-{6?U+W!w4+s~SvHk<J z{0CQye0M&$^QXDs0`3AFgyz9o$?XAmQMe0}x@I(#un7Kh8tALg=hx=X?B z33q8GX}=8IWjp0@m!r_irZ@w)7u;3gE)Taa+}>Xfp?K(V1Om1VCpTfyBL?f@pOb~H2L_HehMgvo8;GX68k!|fp9 zjvS5D?nJqb4R;r~wy?LnyTaW~WOudv9x@w5GivP;fQN>=H(Xocn`9rj-2WHf5AOc# zK_;yS4`jd4W-#1?=8+GDdm`L};p$~B_YkUZ8fiT)G5cEiP7HYxBpw6mHt} zm$B)rY8(cd0^BR%UX@DJ+SkCn748TbTnqPRxYxnG3GVfh+@O-^{x3b;NN+5mCNFl@ zD7d%C&*-_&%(!FV-ldFVg|`XE!M#1r4)+eYcXnLKA>6y+-XpVn4MpyQYv2Ez!K8gH z(|rK$Yj7vPeGcwKxR1fLvGFL}hu}T}cajFfWR+R_Kb9*kszxIxBlmH*&%ov8zZ(BZ zxKF87pJs!nox&PDO9Qs&^KkiKC)^j{z6e+U`QqyP4^}G5UxxciYTQ8{<#o6p!F>bn zyKvuxYtOn{;ivLt99xsPZ^M0ufm(ASk*)e3-1k{p@(+{{ZTj|vpEoj!K}5}7+O#*3_)S2j(9K%hof)^3WuRE%(N&Rn%ZPZe!__RuqHr9`)@i-tB|HIz(?m`bo`k~5nZYTN@LC{~oG!^3D4ePG z(Roxj8wCf2bJRpRMjkt13wdoMT3@&*_^NUN1y3zsWSOlgSc`z1-BCh8fBr>YMxnxk z+6l$ptf6o&3Uw6tk$)5#!lru7rU2_%+XAvqG|QOfT`? zI0dLMH=|Iqi{0{x1lf!h0!S7LO*uf!jR+tRuuUCPZY+|LpsPUC>6$`a66+@ z;SS-Q93D*GWk}98;m0&kxEF={cu)(c1v?$an-+Ex#B3;;Ae_kHN%=!4ynw<0w3%W_$t#?*E|hlq&c%kJahNXHj^L+=|VTbY1~K;YAc) zM}b#58k|#vFAHB0zKX(YYyn$Hus!+lHyz?ldZXkmcorz$M!^E3dA9Pri^7K}yobX3 zsf|TW6h7$0&w}DVN8m>&OlJvgv!d`ZuXE|`QxtwcVFn7{>L{O~@Hq-!shVG)!2O?e z)TxDM3cnV9!`5cwX#c-3ONHmnUl!QzWEFly;TIHsLct32GlixyZ|Ynf`d1WwLxF$$ zf&!OJsTKtrJbd^^HnS;Y@B9O=Ckp?b=-C6oCR1{s5`>m`r;c<#d2;W)c(Jh?fm4&c-tyz+U?+NKUd50?+9-vcsp}=+px5%StokC!rLu9PvPwj z&))o}E+ZUd7!G7=#hqphx!D_$*gy|)K)$1U5LnRr)j5g`8 zkq?Guwt z8q~V*itzOQm*-Jyzf1JGpXb91QVG105qKe!%vC|r8lehr47?h=3*gn^#qb(3YpO0S zA@_gaMTX2vuKgdc6aV3zt1R3Cg2(57l)O-Q5xnc*T?~(_eR#SA@Gi}4E{CUWAMc7x zauvL5;azRUvcE<+g2}l@zaHLA@NST5B)l8vs3f^rI7)bnp=sfbhIebqB_9j#S9rI< zn+9(jyeaT*hxedVcfh+7-gxo5;OXWsOMVYL{{N%o_X%|i*aD;XfRYmoMJAF^{t&#U z;Z1_~h~&Bi@E-1zmOdYa_gI$ead=NC*OS>%p33}i|3@CQ1>|uH2;TGX`27d*7vbsq z51r$_43C>R@LmzV3hy-$J^VvCrvP|w!ke0T(8y$&wfgejH3Qk`6L8-9@a!)jXTbZA zL(Wv>AHm~h4!r3?UIoD8j0W#hcrqjZ4BqGbOE2$>^e?@{zk>H2yqRV!`>)~g;UDpD zN$8*Ve>EjP(O#T~+z2W_iq6OPOQ0yTOf5Q6zT3rMc-|8#5?l6GMfmqKw7@kND;nWf0$C@!H~OQsTW zE&e+mmNhe3E{9^zjCY~fE91+PSc?_=ptw1TT>qoE0*c(3L2*SCS3+?e6g3?bS3z-g z$rb;LtBLm$_BUi1ST%kE4#hQvYoW;fAFAk(`~N7emnJje1`=+F;zlBRT7YJoptxyf zvze)kqqv1^wnT9k6t_ZgdlUyyMfMkVxDATg%fH3#(!8?S0mU6fcFH{OoN7_r z6~+Cf+D*7SihH2A4~m0y+&we}thoN{VibtS$7>!w%!%1xRAwN=h6pDQRSNs?h`TZZ-bQ*Rz zipQgcil@-{eO+i5PeU;;;pr%zf#NyhX9~|k@oZYkGm47;I;gY` zif*b!u^@@209M~e@iG(x6wgDkgkl{<27eUGnY~Q`RY_|9Tk?j4O<`KRws<6rQRJNt z6uX7z{%_v%QM^EAivPunj4OFDikEO1P_+BM11TiGT&gRCR|>BZUX9{49k-oYUyI^M z6t9!^df^R*oG4kN8&Mo1a+C08;V9uPD2^7H8~>H$B>;-I3C9Vw1!UJL#XAvRj^bSi ztb}*Nw{d$9d^=n3<-A$E5B`!U-jAXMneixoh2jIe(Nmm&;>##bMDa-!A4KtC6d&TO zZI>IxNy5oYT7fBf1Vz3AjG{LGi`@K2@d>sJZHzyK;&UkS|KDZyjPO||t=7!=yzm9# zizssQ2SsiK(T4mL6yHbjRTR@BzJ}uKGS$E*W%-lvXW{?RfZ2Z${wn;9LXOWr;4gvVpYRtz@h=qr zL2)*Uf3pGg^pxuLFN*)Mn%3t2e3ba}!$+4zMXQmm?##KrApC{k_uzm`*JJ*|@cHB? zzXsqh%BL3n#o#Ya&t_x4!P+LWQQ)<=5yhx|bJgHyRIhrmA!{!sV_n{v&`KNbEl@P{kcu@ZK+fZ!hw|3vsFbOy7HZC`)G=bvm6 z_}u*IjBWok_<7|$U4G7h&)_e9mXK2b{Bz*vn9Ec=x&yxe-%T$ndBNx__;)Je!@mZ8 z0RJNRCHU4gA^bZ0vhr&G$FAc2D*PIK^074Y*?`|xypp=L;_oUTDa2QhqUfg?j%I_?N=xwEz#%(Ov=nD)?7Yk_uT^0AkAQzO z{A=NJoe%#y_}9Z9sUqD#dplX|#}eMuNs^C(e=B_LNcf}Yk&l6Y8+_gT?c^E<|8|~q z=E|H<+|)@}T?#kVsm{x8c7B-`u{->uBqmPOkUie=w)N;D4BM z_#eUl4*qobpTYlFe&|iX>Ql3UKZ9Y`Bs|vV@b&zU|D{U)m4q`ht-VG%1O7MgzojI- zs`Y2d=6m?o)IY$tuKyAKPx`2fIb{4-82mr@zhwMZNq)HXHumsRxzt zANc>$h6ev3m@nnD41k~qf(5wg9W2NQW_vhxvIGltIZrcy+fWP^L9jJ~MGumgeuf*lbYf?y{E`ytpF!5#>9 zVW$MUBG`={$ahbPA%Z~&xY|dsCju`1J1RSOf_)_4Hx(k-AHiS*TKoqGQfOy7GaiKC zU<5@qmDr4-yVX zaJ&c?|5+`pgy$eQ8NnF{PC;-wf>RNkMg!}Y%uIDW69FT?xSs#av z=^?ljK@mY2fp0@-5ppAelf125kd98~t zM$nBw&wp}|SeEk;oS$XC0D;#3!9@%vmP;W8!6oD@)ny25fo+3rG=eJ-+<@Rp1lJ?D z3V|N-53Xh;46Z>iLiX3vvmMBAPD$uzB!Zg}+=$?&)N`suFbV;0{&tLM$@M>iF$nHN zFc!fbO5SER2*x4M;y<4Rt`2++L<@P~gIyNR5 z&&(c1@R%$g5%T>nSw2qE;ZGv?2fzPDb;rf zX32?e{sz4Hi$J%7gP;D_iN&#Br2SPHe?#z>h}rY`9|XFA(kasH^e71U{HM(R<+8`_ zTnGQ5#E*ZXG(V#~2`~0hS^%X5Ib)Ld5H2KKSjbO+Qp?rgK$I3oX%m!|K&dB6OQN(4 zN=u=%G~>1|b9nBQmPKhfp6qr;*n&KH)q*5ST`2Y9%vjXcR#t|YV~t-@NAwE0ug=1-}gB>jb}3)e85$JJWOyS8v0l(hd-T2Gei3$^)E+E9EW z;l_sZc-R!B%}_cArOi<~7^N*x+5@F6QQ85etx&QcKLDkH%D6Q%+I!6`1>ly;}k+L_5gDD8*Rp5l9!c}?Mps4 zxj#w=pmY#Q2ck5%Qy#Nqk%pi&l$KV=PToUMIs&C(6tW}u2oOrV1%T4wnea%IPDbe{ zl#WN~Xq1ja=@^ubo#P}u1WLnG&nTUM(n;nYr4u`qQk$T33QDJ&4N9k?bQ+EAsaGb? zKubkr9d@R{4Xi~ z%a4Q=A-8~JUl%sArf8znQnA~aBr*d@5|l1NsT-vWQ94(-&XfFn;RUHZvD1AQqjU-L zc9NGW%VomLQMy98uAGw#rK?f87Nu)cyb&y3r-av`#BCpxuBSJWk*P}jCX^mP>1LE} zM`;vFW99!A;b@d@)ltUGbClaq8b?1_3!`)gN_WZr&Qy+4=lc&R-6J_a0fEweu%{q+ z^zri?eF934pfphiHd+|`#U~kxOh)P9dF&sR@G+F05qTV?C*}_1h@dnJr5{uP-2yhD{aBu#5H5()&nW$a(*L3Kmz?~9(yt=Fq4Wnz zzt1_k4#zKqNIM%P?f+P^6G{F>Xl?Qzom;KL`4G-OCojSUQaPQ3JrFL6a3Ps3jBpXE z=J*L0L%1Zu#St#i$!^+o0EA1WmI#+YcmTp>5$=z0IfQ#6?1`{H!Y+ipI3w6|=Hc?Z zdo=aC?MXi4PEN&Hf4p3bzsR`wvoWXDG=IB+R}e!kt8R7VaY4)sUZE4R;gn zF5DwMVpj6K5blF;Z(ereA?!w|`@bRY z|00YLYV*fxWVvk6Qg|-H^T_SOIpiatA{PoTQmO0{K-LbI2rm`dCxB)!3*}cJd>`SJ z2p>Xt6~fU7uV$yv^EC)Zh+HeYPI$ec$PL1g!W$9l5`ejGMmUP+0=cdNcv9So@IL!S z3c@i6$0D>%{@W0aV_#cE?2qBX+g0E@_y&hvdW3f&v@vrxwP{T`nD6B^2#KA5TKtn+ z-iZh&aMamAVvTHrcbM9L6@-%zzKd`&LS1-<4#gg+qsLf!Et!dVEvLO9csRy%}W z3%`+8j|_$1rK-$;e*w%=+0Te=P=r4r{2Afj2(4THMEDEB-w<;B&&FYCe@FO7C)ttk z`5%O{Qv)KC{~-J~)Df$}13qVl4w zGRa~nFP`%Bq5$P3C0|OoG|J1&(W1N@%4?$B6XpIWccHu*153FVOI2PT<=!HC_=l3d zDC+|e)#cp`MRrGd50v*td61HOs*c+K zF$30jpUiS!lzH1RX760jh_XVW75|tlNz6zDCQN9}GKTy5~<>@GoPG`KpFsIOlqaKnf0lPV${bzFJ^|&4%Jrb|p)@bblQItvXO@qk{HU@#mPsB@Z6xF) zKqx;Yd>Z9vsG{Uql%LCdJ}-$L0b*V3T$?J%6qH}i>|a5dQvk}Z3H9eMP7Qv^EVch% z=Kep*blx@E&eK0p>5cMVs94a}D*)8~Et`K({#WEbVr4$z{6ZLt=n-pFjBr`ua;WsAit;X0dS!h1 zuKQaO_CckeNMGR!!WD%pp~B#diso^WRZ&^3t2UZHCi|nJKXa_CuH+i1@ZlfvwNP1G zWF4Vy0Wgam0aEQy*#MOdrQOI-gl7RNn+P{WWiye@4MnyhF36DnQ7>$Qx=Q;XtRO+Z4kIGrHIYD?LDtg_ISL52p*yNd2I4 zCJi{!&PK&U<($kur(AiVBXm(Iq`72Yl#qV`fJ$H}QbHvZDa)oJtO{#}H0!iRLuO53 z3zfD=L<2gEg^93RcrGgEWqHpxiF{s&$_QyMLgiwSOQ@oUONE!Aa=C~mpvsk*_9_Xl z7G_TYG1s-ITqoi6!Yuw*Mxt_~BsUp~+$?s`?Ar)|8)ByD$^wSNH`r8 zhJ92%Hq_BSO$m|m&rtbX-s%b>bQrd?FI7DJWsA5{ha>XMn3Qvj+mS=5L*Fkkt@pVyE@TYuzR5!?MHk5WFR2lrmHz7$!b#*gTH)ryI!=&00 z)uAF=p*jH7J;k?1b)d*LsP2gBwy188>UJjKZ;Tdo)g3ajlPq^mwWuooR~i3N)x1#M z9o0QJ5~_pdj0$PfitjDHk8od9_Y>LQP~-qq56rq?FscV-d6jjzvoKpa*M+lD;9%abKx+p(Jc&zZa&MKvPJgTQkqWE7uQT!y~$*7)Ugg=Wj z^l%!gr>7EB&p`D|2{nCG&(7rMNSG5c{&UZ&>Y_Ff)dFfuqUxdg2dYI>zeUxTS%B(e zsFqN@71a<`voE81A*vN=tEeWZ*2L?mD%4jSs5Y}+Zt*DA<81aw7^f;_>6YYNA*TRT z&lg@`D1(boRd}ynjOrzH#hP9!ybRULQ?tzYO3AN6^=eeFp>gN9BaEPWEvnabgmiL) zj7JJ@q@2Q=gg2u)s%zRpsNNzRZAb%3#$=XbQN0b-dr%#hNp4qOO##(AQN2qCy*n+N z_`Rr3M)f|K-H+--RL4vHfN;VbOC=u^K7{Hd`tP*H!^-=JRF9@Y@yAhp6V)eBeNhIS z0#JPl)lU3J^%+SN|Etf5Kac7Q^VI7l38x4dXGC5>^;P+QP58R-4MQ5RNvERvkt{g{ zp!&9uQvj;(qWT`HABw+^>IZXjDdV&>iRyGzKaUK8)h|)~ z3e|5=ohese&$aBd(s$-TPG$+eNA(AhA2az+O8zV~=f7m~UnS8LP~{XL|9_%p@%%5T zW@navqxz2||7Mc^P@6C1UAHp;qNXXJwt)D8!XBt`AfdLfFpK}SMU`AkxVUf$Lms`h z6lyD=wzP!H2$vNuM+3U*DeOY6mx$tjP4U0hM;`jlZ6DgND6^GNTN$-YP+LXGRfVge zwhn6j#QO_ZHxyYzxF%|A$>-X0e4@5)X0x7b)<D78dQQ$X55wM}KYnQ(K| zwh-A;xRs&E0Mxdg=P27qxUEo;p|-vF4#FJ`MKlG}I0c}l_+Q&qd^h3l!aYzMgxX%> zoMm{FPQms;>t@vUMe{1u_CtLrYWt%$4z&YNyHfTCqBa<{1hs=uI~lbhsOjEr%`ACK z2(?4FjYBd_cqsiddARTh)bx#r+L1~gm1*_yhuX2I4VU~lLmlpTCAt5D+KJ+NpS0ui z6x7P7or; zj;_rg7DKmynb-Dzno?DjrG}cm|6FS@uL>i%US+MdQHzv}skNt`%q^XCqjoN8m!o!` zlIIIA5MF2~a*^<2)Ux=V={g$>bCg*0`=jB6bey40reA6KLz!ZGRu>BKdaNWr=oru>Zda~ zb^w2D@H0_wpnewWWz^3`-ADbL%wAJKT~k2ak+F+pJI(7CqRt?U`bDT; zjQR-Fv-n@XRB}!Ms9%mcgFot5s@<;2TI^~GuQALd*P^cYU%#G0X1M|Nks>#C?fWU} zHwkYxqyZ%i{-}=@-io?HO?`}#V^L@DM}3^3$nC;Agm zDkdL5eL~l$SH(32jCvLIhfx0<^+~9|hx%mH8J1Ch81+X`e;V~im3&O7_+Nj*xROr_ zpUOJonN0pH>d#5_d?tB8$rpt$38$pR7Jo%(B~kpZzivrM-a!4$j88@Vt&DRDK>Z!z zyA-M=QGXxx4^aPDa!mpCY2qIVr_=HlP7|nqg1Q=?d6$$vruRJNBsxkkEmPF{z?32)c+7k{rn>SE9$>xy~fd)@ihGYh5GDF z^7lO2e^LLBNjp$uJ~ZaHenbPp1v-7&SWwy?G^2K5G%iA85i|})V^K7ALt`;C`pRZ; z;Sy*pDYBGsY2h-$Wzpz`#&XtTX!Pu~TcgWVk}NNq-dVCwX0QSpiqDM|(O3zMHPKj^ zHZ1chXsjx-8pnL2U#Gzv{n1!mk~LC^IHv{~uZ@P{e`DQwwCkg>1sV$e^t>S&8)fzz zqp=AZn=9|8Xl$0A@5J=PZ)}Oi_R?-89Dv5wS>Az?Y=g$Oo%U~RM^zdd8#|z}V`jM% z8hZYxu}dd*HFl*cjbn}7(bz+-2BERP$ew8ImF3-Al6}z7|GzZs;U6BC_mLY1WHtw) zF*xG~p)o|-q4QW;{BNK!42=RBhoW(!d>)3z;b z_R@O7A{xF(AY||t3DGEXjnt@g!b?N(zfqG`QvkIL{*tuNQ2cK&{-Y6Ra!mn^ZZytC z<3cpf<5M4v^Z9@T%`Tvs@lNt$G~Pnv5;R7laVZ*#?TyROxIFWA1sb|QYh0B|Y?4BQ z!5@tgna#CmDE>FDm;8o~rOh>s8_{?PjhiIDSvU#}tHmv7j6-8|YKg|JQjI}lEFW>9 zb4~#nza0$)|HhqY+#@Y70noUcHtCwYac^h6+PEK$r_dOW#=~elfW||zoPfqeKBCrm zFkKjnPm*e~oGc{%2pWp;jYpMy42{P-3+aZY09#b2>*~hSGI)l0S(0bbcn*yh(8w+U z>_T9l@6dQLy&^zkN@n@8>=pkT7O!5*4Z6xjLE~D%TpqHHB*l*A{9DXs#=+`K7tOxTb)#k((Q#xv>c)-vrG~Grk#`n`e9r zX}1(I{xiZfw?=axGzX%&Gn(u#X}3j_!5_`-GszBU?$|Zr05o?pq)>?FE@&$F(|9*D zchBtiQ1(H>J%xLrx%Zs0gyz1P<$luckEYzx&w*$Tmhd38)ezy(d0OufG>=4cm~0Le z9wt0o$oSuxk()=M>7scwnkS*j;E(39)RG*Brh_;7Y1mSL_*GY zO?&@$ppq3K<9{ZpquD_7A~c(5D#ABgXtre*F(x!V+$tPH1G{c*-iGFVl8i(1c9A=TcM9+7%#Y2x z(Y#0F`QB8L$?r#VyjjZl0TPb+iAp{wd`LKnDwbig@L}O2!bj13jH|Nd<8#+w%_q@( z8O^86KsHaK`HaZ3ndCV%pO@r?O!A_VFA1kmm~L4#Uy;Px^EHvz(R>%pH^jOAM{}z1 zE#ce3cMRugxA!D`pTa32nvDOFOhfY{5ib7G{5X?;qU5K-8J$_I`8iq(q4@=x-=g_t zX8DzDW}?Z-Li`&N9>qf9KWNTE(>yc&qxnN-^COx+W&G!KStx^F(EL^8H{tJ@%^zs~ zDal{z@!7(^)AkYP1R(=W0WD4eXw5GKS_=NH1(obEr}xoX7_GI?S_G}0Xe}!3V#39R zO9+<~E@ddPG+N8>h%N2^w7CC66(wD0tt6XX!sUg%g?-TKE3$&2$ciNCdbqW+B&!Hl z6|N@iC+sg=9j!Hth_Bh{k=EKut|MGG)2@fs`WfEb}%iQs9RXUFr=m7(?YEsqFY8Vl3qSX>pbE4!VA#4Fq2;-$;D`0g4U%JvM!gUB(u2!tt&Hr6kehPQ^;{5a(C7>_oDRxTK8r0`=uSvBx^K5$%$w^gw}(pjpUP318E-?GWd%;iq>Ny zk5keay-%X`7FtiCr6AvWS_aPupGE7rc`RQ*>s85LMC&EAUKXE{`VoI6^QrjXdR@Xd z3`H~rw5Db@Z=>}ATJK2pu8_fBl3sWK+8^wpV69u)-1F> zLrZbK^|>;BfmSE}XAWng^)*`GqNU(Jw-I)X8h;xfBYE@=UNN&@32g=c_A05w@}kY)FEhpew&H(#bxG_>TrJjK3+;iDtc|wfe|ufD zH${8BEbsbgZy^F{O8d2(9UOC2W`fG z*%U~4tYRkddDFHXpw0N7Y0GFwXjd|uD%uSG_CvdlHse3q%}k;xpxw@n9;1Cb+6mfM zq1~O?a0)>CJhab8`!ewh(9Yt2`yxp$M*9+#?b6hh_~mF{K_@Kpl_VX0HQKi-*EML5 z5V=-(9ojdceZ9Eie|w~HB^m$a=Vm2G32zaOrpkWls<=Hy!m()ICNi$0Wf|^3n&)eXq3XsdT^ic(fmwr$!Sc?8JYxA4*kdPnKNqzs>lM_M^hb z(0&r_$5rwt=JE5Cv`-5a{M*kO&%8a4_UmZBfc7hBzbKoRsHNK}Le2%5@vCURmTLJ? zp!ORwcr%rtJr(V@GX6H-_M($_(QU)*J;d9g{XU`#(f$CD#hee({u}LSX#arrN3xub z_IGH1jP{pkemk|z(fS=>y4x9Th-jnKgUmKTv=yRFvs{}Y z+FbH25N%1Jo>Y-!0HW;>Z7t5}hEXWm2GO=1Gaht%X%+vY9TDw}Xs0V_hbV`rfGD3G!a?Mw{QpBlzU4&} z%;OaolApsFFHD( zTbj`Ynd&0Miy^ug(d&pVL3BT&OA#^DBf3m@x$p{l;1RDvbOWNRCA@}0T8=<;Eu!m~ z?2OFovz{7>Xe=TIe?&JS8ja}Y&P8rC3ehc{tqj|fk2Ik~4E~wHZHVqeG!D^Sh;B!8 z2UYfZ;IVd2-ASVHjEJuQBf3X;FNG=<-)xP>Bbtop0Ynq#$PrCMls4l-sU@OGI;aii zhY`JqNbx^<6wyeTU$0C z3a26ZNCS1c@Z)s2iZlKrnj!qmP#!)A-#0Zb*M?^m%`k7igWqA6S@Rv@qllM17zt52%`V+CmbH;!BA(}1xTlf#6e<|mP z{f`*WH@D?uAYOoG@q&mK<;8y71Mxz%Ctn!xA}Q~njj?!f#C?@z3B-#3%)S(2#s7F2 z#J%`vM7%6wPCep15i|aG?xM!aD|>HYpLygfAYMzt6@@DaS4O-FZFrPb5wC`r0UvQc z#Qo>Y8b%Ov{f~IfRET(O#9Jd?2l2*;*HxDFgzF2n{*N~_&JE{yqt50tJ#T_Ii~sRv z?Ads8;TDKB1yHgT;sMN?#!NeR;(>Czjd0skj(B@?TbXx2vOMA)5syQ>6JiJP&WKMy zybIz35buh3FT}ec-aU1Qcn=a=48((kd<9r;75`(!|9D?jcE7B$jQ^4xi1-M^gApH$ znDHO+5USYkL(_goe2C=3goh$N9PweDie%#x_ApX>RCe5>WqAzZ;}9R4b|R6zJY0Bu zDnxuD;!_ZxBzvy^(^C@hsfZcm5pxR&@#%=qQ1VRLq?eP_o{jh%$#XKxcT~*cB5oos zAP!~VAucjH#lG#mBMwx-QfFYZvSq||SyqHq#I-qfM6BR%hi1pM5L*CmBaUSm8DVJ9pXz6UxoNmX)nu$!R1Oa{v+nRU~_;kT6K7roY?-LO}m~v&DgqVRH@npmg zizxobk0O4IX1d#pIJ*TLKZ*ERnLQ}weDxBMnX zY@>7*ZR|4?%>Dyn#sBz6#JU8a&Cjx=4dP!i%im=GJM%K*A3~b~6#vuZP5d_!i{Aer z{!iL}J7Xr956Oaz?aBN?2p3?pn>X92PkJC(DCNwUEP_OVJy{gVVv;P5WJx4Tqz;KT zJd2YxI1G|C)25rR606 zk`0h-m`aFx-WbUyNVeqqIoTA+W+q3nxo`{G=q<4HNmmI6r0s@eAd*v&Y=h)LB-C0$*H#0euS@e<`7f#9HNRH^b zX=fxy8cK2$V>l(pAUQ!!jzw~u`gFMP__;mHRy`5PNit*nM{)}NYnDWE8j=vn=|~Dl z&Onk!a;9v~LXtyrHouUNoWrjuSQdRtfrL&RByL)9LnI!OQkT7VmK2frG6-l{JwCPP zT#%HJw2)Mg*pvVLWK$DrQb-y|nl%2<;g5%CBhjBflE;!H!fxTYX%#eV&PVbZk_(XB zf#gCYS8DiOB(sZ=Tq2_QpInCI3M7~FqcL_YLlGobA-O?jS0lMbMDahd?zkSwb^JV$ z*&B)=8HwZ;Bw74V82^#njARteI&C`|$yg-%{%0~~?mU&;CjaAvx6?kIt&%&DOh$4S zlJQ9HMsiPQ@X+(UNbZyU{j~4+e*lR_7bCgZOhm%?kK`fYqsq_8gmLj@;Qxda!kHNVk408AIZ#2__b8uAo(_xNIMJ34@kKF@5B}( zw(v`SLbnCppV4jM+MN8MaAytWM@!!3&aN>Hb|lyl9KqRHnz=?+C;diLnD}HGgAFjaq}cY|JZOyYD?h&^H^~!Qd`T| zMrf0N8QYQCKDKQhn;Mw-cT{vIQah8{h18%f$NIS|DSiA=8PtJ2NSSz&8Z6wC)Lx`c zB;_{NQKa@Ebug)YNev;jpZNO=4{&H{EvM%HsiCTF`X7f#9YX3bQugPsgn76)M+k=r zkBmdIk2c$Sa*R#6Q^%4zPQ~NRZyq=QUoPPcCpCi9$Zqm(Pfiwpl<*Ycsie*zbs8x< zFEDc48EfUt*d}#0sn1A_CUqmJF{BEl&QaZSNnJr|tnBkhT}tYFQWHsCKx(|4I!8#2 zv&^;!USx)?kO{)%5>VW#mx;p8} zHOADHZAGsWUQg-<^K0Fbx{1_d^50DA7E%w%zLnH%GTe%qBI6EH(*Kn7zpDUuk#b9S zw+Qz*v|l%*As}@>sRt6zgK?D9!=xTD+m3>%&LE}hKi&R3F3%IB-XrxSsaHuoMe12O zpCUH58!Z(F) zIW(H>D({ebSI(JTr&W2M)JLQ~kpDyTyPs|Ak7JwEC!{3)&hOMa^*QMhsV_*o9e5V$ zElGVz+KJ~^q~{{_HK{*HeM9OeQr{})cf#*2n@Nyf0iDt-psjWH`#I6=Uy>GoCG}g+ z^sPz#?$DfO+x(x@U&6nI{|NteDC56ay-Ck)#WbYtfJFQkV=>en< zBfS;rL8RSM>_~bW(%Y$`hJe=|ki9+W9b^o2ID2+VdMDC5o5%g!iCB6U(tDBKRm|Ol zy9@Ua4i@eiZyJZB_a;4rw9Wq&+L!cxGWNG4C4E5mLYCR?H`Hiu<-12u(+810Sj&B>%q|7D+IyOY&D%{*qDPWlWPXC|SuEMyf&lfIPn7}6JzK1ZB$g=2;1kv`v^ z+nJc}{t?@~2Or#(3fq&5Ff`=o=O5yR}S0q%d1quhR8Cgb*p z3Yk8ntE68hT_b%b={o6~Nr$8-lWvf1x?L_gSR&FbduvC!E$qZcnd~b`yFK$N9Yj}K zPmFdAX&V}18tLop9VzJ>)Ug|dH(9j158p!C?Mt_kzRjG;K}z}#(kA}B7HtaY$4K8r z`a#lnlYW4-d;Z_my;ocOKH>eAAIIO%6dKSBD*o>4Vd zo%Bv!q`l{hV5S-cI_`F9=`k9#HW~pY40EkaiVcCH)@hX{28xJ)QK7 zIAO9=y-s>2X^DUOO||$I>32xKZLdgmO}lqarcM95#dw@bzfbye(jSm^x?%cH`lGme z>Z&IH=}(gme`eKf5xx*}mhemU|106w4vk~$@LMu-lm3qM&!oR6{e$f-UG@0UF1V$C z5_U&+(!Y?F$ftiL{hKAR74p0AkM0Vw?)^nt`k!_?z<;Fwo%4=@%v@G0ev?23GK-U$ zhs?s($;`ZD=94i$nFYx#Fz0FW%tBU6PsfR{2$@A~q{}Q8@BgxwAhWchOOjd2_8(Wp zp<9RUj(nzv%qC=(A+wG+%aU1+%<5!J|K(YM%!*`IA!DzACbRPF%qp%*#`M4IwBD{k zW=&Pp`~Nd~|9?Utvo4wSlFaLiwt;X%;YMUOwrJkAHJMGxn8K6M5RlOjkg*|vOg}RH z=k&xp63om1GFyqD!PorTkg@;&lG!eP21E7^WC~;klDUk`j$}?GvlE#k$m~qUF$a;^ zgUl|$IE2iBR>g*F z+u6w2{GW{UKXV9~!*DO}o&9uf#^(QVk<2hM$C5GqSCym4nEv;iv>lma9Lj0KgpA|K zNdIG1$qXkWiO#qM8A;}JGAD_4vTzicQ^~mhf2nV7gvv<&<5vS^&JgEJ;aOxxlR4Wy z?&cag=vgvjVnfk$$&4d2mdttGp)GU1{1+JKwJph97>{dmjwf@Gj0wVv$y`EaqP;HI zk=^yf%%!oR=p^Cg!Yjz6$)qgmj!Ij58KLRF3>yN-S?bGgW+#%==_qTOY*jlCdGcZ0o?s!cT;sn$s$NPUZ(08Uix2WPd6AipLH0jnoxJ~R zX^r_GS<`>Aa|?<6wjQ$c$}^vEe&GUfl&iUCa39Sx1C*t!T{k$gWRzBeMGbOV-~1Zy|?n$II#yFj;*9CTpJnP?gPu zCjK(|3HuATAiJfE0rBWYb}JQa2q3$SL)&)Q?Z}=$c6+jW%fAEJfn@iPy`yj^;m*QA zWOwO4cAni;p54gqK4;|34wh5;Z>{X*iZ(0G?n8EnLi-B$BfGzh1B~E)Zs*J%D9=!` z!^leivj@v_i11L?3faSihbMhF!s?p;NO3g(&mJxN7_BtD|39nu|7VYnS6Z^_P84mp za0JE_WfiZkny1KA>qTx zf;^()RI-n1&wMQQ%a;CUpL7Iqo)X#+K=v83&nCTnPM+r-YKdM{@gLeuL`G; zoi65#B!h+k+qd5!`yJUgMSF|vr)1wI`yttP-PO#aWwei8f0O8>K8%Kw$nh5)kC|E%f1@_$d(>GKZ?{YdtAvOihKnC|zp4C#N? z-v2=Mx7qz6`$xk3lk8t&+VCOcAK|}NbPAc9i`>HI$<0kpikF*5#d(GE8O@^elk3j^ z$w~in3t7mun=|nj$Mm1vV#3AAEg@scxL4$s!hKsL{zFZ!j|-{pGUWCow=B7h$t_22 zO;uT*+zLjpY%2;^5^B`QtwL^9)m<&gwz{HgI7~dI|K!#dt|MHR+} z?E5d~j0Hcp3As(lZB4GPXqyR5|H<_e_7`rUx?3i-29Voob{=wW#qLIKTXKWQZ72Tr z!W|sS7)Wl%q_@)l+|Cy2uAg1V?HV&}ewf=`RrU}LHh;IPdyzXv&b`U)L+%iA`>ME~ zaje7p3lAWtp&@sm`?@i?q4teqiykDjAt3P_D$ilU!^s^XW0(<)f28mzp$!49x8#mh z@i=m)$T*(d2^KQ`iNfLJMkJn*gWQ?1t)8Dv zehqS?$-PT%47vNrokPweXW~z8EV+p?r2o0|$z7o0g>eRQbu z3vBKZa+j*sWl60`Dqc?R3UXQ5DRTA+NOIlx|Cr8OF-I&Q8o+_mJc)ZTcNP+!5wUDIoC zH1SvHdUElmzcKb0TGKa^yG4Xsg|`XqYf7_e#NWLZO!lMXOvA}NM(%O*oBag2ClmWAa!+^Xb-8EAx$pnF zgUfyVSMw{gUm!P~ob*5UQc}x?0CLj*+^giK#Ya|he9a&y@i)%v5BX){+RjTE0bTvwo6_g zt}?=E-*K68D_^ zrsVt1UJ7wGC*P0!w&eRK8MYvA^M6GL2)7b$E!6($)F!{3il+beGtWTs`;*^M{+-AV zCNJ@~B^pG27x{P9w%ASBo&S@!At2dmdy?Nv%)QNNb@w5^ZxYoI5RWGL0~FN|kUx<8 zQ1XY%a}fE1mH&{W)}iv7{wE#{0r_F_A4&eG*sog0kUyEc^gn-`2*+DR>xm5kl&m@1AjI-lyO@6dxusz`%@)G&H z+tbF1W8yF4d^5Uh;6n1_$X`N!yh0Zx{s}5xOnzeQQLjw@<-d&lq=b1n`735~6io{= z2{G>x-b?;I@{f?eU&ROP`cM8r;Y0CoM&5=1d8V3S`^lr^ zZT?UG@!4uXKGFaDQ{p@=d`9>zdDDOL&nNrC3(hakOXS}qFY(Vy{PVA>$~58hWc|-j z(S`u>uake{f49zC$@5eysh!J zz}pJX^dHZ}e@;KmvyJ@Qs;k@04&m*9x0^x(g*)QyB*XL{Z;)^ohqhCBHUyY$q22LJ z{P6}So;~sQvYSEP-tl7|c>7q$Jp195@%G1)o_o@NPx|j2s3b%24w7M$f4oDiqWif? ztalh*8t-ttv+<6=J05Qs-jNn{*WbLO@Q%ehIw>Aw7wG;^$AxD@K+oN#Ja{JvPsAIJ zcZPG~jS!B+Gx5jMOX_OYm&+k2lex@j>lfiZ==GvM#^d=;hrP zM?BTinq>a(l@d<{?zpEvD>lM#xv!&qbxpk@~%`BiN6sD zjCZ#@w+L+rz`G649e|qfdw1adpL5zT)(~$B-d+Fexd-oFRlLu>War(F_bA>2cn{+} zi1(0Hj6bvJ?yz`|;7zsrfbK-ep?My|dlK()yeEw59$RvL_q|B(DZHoU*~ZA`c{Xkr z?>W5ZDLD0b0q|>4;!VSwZZ~A(#)zYP|RHKEV3~??WS-=Oa9Q+|w297?l2d?kJvx z_j$6pzeqBFnHXOsp>LGL>Hm*--^n)dmtp$f^Nby^b`Q~WZT*M$vqHZJf3=YH!7YUb z0`CvJfAIAFA5ZW9@#eh$M@jze-rXzAWfco^3+d)5%tK*b3iDaftsM6=&H@ycrm&#w zg@g+W7oo7IGi;3&B>rYBPGO0}xg-VY|Lp(u6#7u;p|C84WsKu~Zn+A}IfKITLVN!+ zg%yP>#a)%X3I!8w3ae6Bjl$X#R=4WrSwpy{aILO@7uKP$zC1bwD6Hq~?ydjA2C+?H zBMMtn*w~7eXA|M36#7yaKw&c#Hy8HnN>HIcg)QuCuCQh7N&H*Qc~g2}8w%UHTB^8R zSE36$%=7(v6b8<-$1n;z&a?b@3On&%nZnLYJ&eL2ZhN1?E=-<}!miZ&P}q&~6bic& z{6=99iaLr5gDLDu@j?oFQJkN`-V|n1aI4GhsQXg5m%@G&CQ{g+!YB#{P&k~z5Zldc zySP3NwV6iYAmPEnLxhJ44|8Z_;~YWZcna>R6<6^{;ZZ`p{Gnhkf1q%z@VMEvR6K#g ziOMisI6^p5c#`mBhmI-x6bk21IF-U_wz@3m=|X$?0|lFPP|*Ls3ikgm3ZsQ%9NNz| z*}1VzVXQ*uQ8=H%MHEc`DO@Nt{ik5_|D@IgkuQ#mvM-^~rf?~RoQjuGm?YzJ;T6J^ zFfDZN|8)Iv@Bf_LlRSlroF0XOS~UHq;0sOvDU^g|hgQ)%RSI#>#pP*DcmIg%@kZK692-j>d$RLlR*l1 z#C+Lzia$kY?|-0hw?l>QiD?w>qwoZU`^|3zodOgdq+s)Z3J(h(5$gR9g-2ySChWfa zS@x3@o~7^3`uf3O`f$oPudM zg)b<~qVNp`(|-zI8QBcY|J4wMZz+7I*1!MXrhgRkCkj?24pI1p!e11ArSONMzX@#! zP=-HeXQ1#m#aQb9QAn473jcMP#kncktKKNuDFDTJD9#&)W+TM~C@x9S^xyp`E=1Av zU-lvtZ3v*an0cIZ7Z;}}{f{3hvCvW!m!>$BVjqf|Q0$?&D#c|eu0(NJ>!-E597XAW zaRp^t(Xz#>rMNQ1Rl3ElXEloJQe2(l+7u=J#Wj^=t+Jg!A?B*oJxoT|{w$MXjF~Q=CZgGTE2dUj>Vo zS}1-bwK$35o9& zbM&8LnAB=0)D+q&0L7M2*MEu~*^?b=C0wPV&HodRP5zVqTu;!C;tlx2Dc(r&af&yI ze>26qDVqMPcq>KIf7u!WiZ%pLv`tS@X9UG5vhQ-Jc1`>#-b?WTiuak*iuWhc2Pr;6 z@gX@Mj-#qIHMS`}O7XE?{wMHvqxdBLG8CVp=u$mRaTdjAD85DUS&GvrK1cB-iq9*j zz5I>hi}7N{NbzNbUZH6EZ^?}_J#K~K42rK&d{dm)g>S^1r25+wKa~F+itk#;mT0E% zJ>mPp4;(7{z~yLiYERF{Z8=@rTR1W$o^aSkMQ55Z~x69_;cffKTkL0 zOaEPed^-!kpC5mLIAl%u3(2{#a1s0^@umO%Vu~&A_&X+^o$z;dHvS-CG6eYDAwbUEg?r!+#@|o&p2EF^dkgo$@4o**ecK=Z zF!?nE_(NnLh(8qnAZJ_8ZBrgBJVa>vFWTYwl63zF6^G#;iGNhDS~>;rbqe6yDS(A+ z5o`#+KLOvwKj!0)z<&gPBz_J5B>eICC*z-mKT3_Bf`2-`4FUM4^{RD-+2%YmcH*1( z{rerzTb;kGJ8(N3VwCA2fvPg3x0@y z9exA|_YA4A zkCJSkbZP1d{%4As{>zw!|2O`Z_%8ET_}}4wE&n(8-^QGT`91!R&c^>?c0&B0VjJJ- z{~!2H|9?~UUz1wD&nC!zlZd}{V`YNXMO%enRpXd583N2+L!LDW)*@Kj2+490tV^&7!Fp<4`X6jSu#xy1 z#xw$n|C}nDiriPYnQ-%j*`Hu6!4?E(5Nt`X7r_96oe8!gFp($NnqV6lrvC&s9N6_t zvrYU71`19833hVWomd9a|6mvScO}?^U^fC&e!B$M%`jL|6aSvWrpT7~2m25lL$EKw zVFddT3?bOxIM&1g@!B9bkl_+Cjw3ixRiyvH3D%-z9!_u)!3ctp@l`~tsH?sNC)*Oa zyDGscs(7mKG=kIZzr(IG?pn8FTK~@^I7`Oa!qLJpLKA<2a~;~xJqH_{N8l5jPcTlQ z3xvt{AA|7(m&rBReb13G=S! z1fH-UEZVZT4CW6AZXqZUGziKBp{i7bRf3w)tlfIN;I_7H$8Hi_M-W-miY)>g4rELJ zgUPaO2q3tM;A$C({s)QvTV{6(aD$q-k>F+-H(6TkS`G;n{ST!7?kgUF)BhI;9wm52 z(Z__36Fgye1cE2+9~oB5h5&-69VVV<3Ecf(UBC%61i0(%f#(0lv>|}tWrA0<&R@0l z@9Nt6pHA>O!3=`83F7Ly{u8_r_n+WRg134t%R2-g5lH`onRboWGTSIX@V@W^;fD_G zYH*-a0E^lXK=3KSXLjw{McpNl;0uE931(T*qF)kxrFH(bt$*`;L-4IU-^Cu;5`S0a znx_eD{!gG?-He}A{DnZ`@3y16?iBn^$!(WED7hB@q_jH0Uz8Rj_?waw>VH(_U*Uh0 zOwuXY5I|{eO4?D)p2zxAnwL@{{-yb?+ZI|-xR7vRhxY4+7ImLomw$1gh5)Owq^v(@PGlvbv+LQ-6jlAQ=7O{}6Ss|r`^Rcj4O+fiDR(%K5G zmGIZ0v=OCsm09{_>OzYh3q|%0FSSL;YDQ!Y&3rd?(+MJS!znrH3wig+ppRj-I zp|mBXt>qaY+$!-)|4W+x$A`bw)#y;#fzm*unP*2zJ5kz`($19jpfpHM>3?Zg+h<$avnuVI$t_k#bYQPoA7nMP&%H{39%{xUA4 zWb=PYgOqWf#gy zciS-SLT2A3a+5BYKp6q~wz5`p*Qc!hteOyKZSo$`cH-%0{)?7;%`$6w}ISvQI`0Z=cerbS2(|os_~?&JTK+d zDbHsW%kv8tpu8OA1t~90c_GS6$hoj^5z33oSj_f~vR(giMcGTrzf@e5-N$T8+e3L7 z%8B@Q`O8yYneqw=XGJl44FTmv`dC~qZu zYx(W_zbbA^+5Z1adHdLt_yucDqkMjn@B+#gc2n6xji-Du<%>j{ zU=`I36(>@b_;)*YnVgd-UrqUP$|cHIP|i{|@u#ezp*%MZM`LCgT3*~Dm-$?m7 zCApsR4c%I^6{CEULfxxCly9Ychdj4YzP(Gf<&C>^r+L&9%6Cy)pYq*Q9-({>l|?Dv zOZj!m_fdX^^8HHkfX!OV4^n=d@V+LHQ@jZ&Ln>@>`TY zqWm`H4=BGwd8St8yQY?wR+Im-P5$kt*DF!h{NJJWhyK5+_evt6&=bc{Wp)z z{}o!5%4&(dx;$$na`vUN znT*YoXg@0bsccPU3;9j|WelJ)=l@^wY(vGQiOP0V22$DHM)}GP@s4B|?@^VVs2oCN zXDYjkJV>|;m0g{oD!X;7SgJj!45kvVlRc^IWgPSC6d>LkD;feS`%&3np#u`m5GvXY zj6YPNgML45MOlP31@`M^QO}%F#*AW2o5we-%BB z%AEiIQqi$o8LmYbA?#iPqGDr&JfoeWul#KTa`(-z!tOhDwD>lS-ohl^T_L zawvsV8nLZIETUqXPsL6FsI(obKa*9wQh1f{>Nq6(TH$rV>y^j-|2IBVZ#0@6&NrK3 zId4JViIaUBmD^?9(Y^Lnk*vkn!75Xz+@+|~e@T7C4FUI3xz9Q6RXKWj4wVP2Xqg}E zN@c|+|Mqi&R+&oG$;G2ozNPXQmG`JTPUTf9Pf&S=%9E-n{jWSdyOx~Ks`_(Oo~NR# zJ(U;a(Ip^j?qwBUahS912tO1$J^5IMP6R5SQn4%l&eKKfnCAbLS)zR@{7U#Wm2Zq0Ph%?I zQHj^v_f+iq50xJ+Y8jI2|COJq&Swt;SAL=LE0zDK{HFckcPf8T`NOSnDu3E)zx>Fa z<1VH0HEySOv8%D;A|;}SZ5buOy&P?i2y?V!_1&}-IKb>8kuaIIAB)PU*&R2Nie zA!8b6Vc{ZF7mYpE+v?&}H>bJ;)%B<@DZ)~5l zcR#8dQ{9AWU)h_Q)0V~bKe78!-H~d45w@VJtD4m@CS4vY=0(w(S2Ms;VZqp1#}dIZ&7s2)Jo^q=Z(RQHgvd#`MR<=K=|#@uv9~+Ci-6;stgBFb^rf5kgEItmqYjd2Z!$c4-Vb?A4E2L7}Zn6 zcPsxWsw1eH{!=|hc&zxx#eAyAQ$0Z*oBxY2+@U-p&9I85|5Q(=Ix6NQObr3m(-b|O zs);|gnCZ3~HiwXOBpN!HtBs_y?^E_zk$k$sJl zNdK$X*|#sN*Sm+4soo&GvHPI1c})MQ-Xgq}>itx2qk1P*-TbZU`cF04neB*}BBu1e zdbhK+!`~y+b?mBc0a(rls6ImVL4|bjzxr@@H?}-emFLkogY3ttx>`?A{eY_Uzxou_ zH>o~N^<}Eh7}L_aS3tOheU9q$D!w3mQD~F@cqLGMMV?oM?*G5>-Z)*w8B||WlGhXe z8@(!;{!@LM>N_&t)vhvA_@40nc(;j>>W5T6qN)+0sv)4NA)xxHs(;oi^A}WSQT>Lh z#J~EL*38$v*2%XtE&8#)cu|6ABp{^ zLVsD&YW+iPeyab<`Cpe)n~U1qZqiH5T@gCbLbZ9QxsL+G_IyUO=mH8!|7)iI)HM08 z+2o(vqTMxFTg>?8Swfs8sjWb5DQZ2`mbQ@VMy-!SMVFzrtc^-e6>GZdXU6ibX!n3> zD^gpTnhsl6(H(2GRaDFLpW14c%?uj?sI5V5O=|1NUQ4*PLp5jmPi?)pD0>5HuTa~N z+P%~^qISES8w)p~wkfqOsP#3zRkR_1+UC^yQR{C`H>$>y?b?>qE~GYq+DK|!Q5!;S zYihev+lJaeYTK&fc3L{k|7&yR|I~I=bf@m*v$iv}L3YQdwoB}hy&JW?sqJo!S|9eH zHrNgNviGF6S8Urfptg^k?*0F9qx-42zwiKu&QHy4l%uH)rFIxKP5x^KtCd59z25&^ zJ6siyunl4D4x@IYmZJL!7}>{AJ6_Rasp)W%Rd znc5lDMo~Lm8BU>gs&d-=-+8*&UCC!sJ4-b8|6k2aYNL(gCL}eR{8KaWm!VUDnudUy z4FS|Hu#oLk{Ymk?m6}i5bK>WtXW{WVrwT9w?(`Q9E`*YFANfP@7E6 z#GhIuZ1oi5J-kh=6Wb1{+5A6VY1FQ!c7w>*2(P7fUDCJfjb=-9qZyX=CgIK0?EMe2 zZ>47Me=vfrw>!)*raNr!lrbgo+(pgwpV~dKN5|TI^4u?cfZ8+E9;EgdwTEI3wTG!a zk{te1sY(A`6DA9fC!8m!J*f;&37?Mr>d&(Y=Q(Q9|C;H)XfINGiQ3EE&bucT-17jn zSE>C@Z5p-jsZFQ$DYY5YW{U6jpVwtb{B1$rRPilpZ#zTwJJjBtGiuk~qo#{L?tPv$ zyZI~5htzb6SNk}rW%{or`i$BvaXuG*Vg9S%rY8NbeI@7D!fz~OefXBzcd>2fiM1c7 z{Y>pgg?>snmOQb4QA58{>*{~cW$||ZgW8|e7g0sie`hl}TZKJyBzdRZO>I+-Z%`WPT%DGtgt*7v*ZJ>umLZeK|J}ZkRYXQfOm`=CKT$QtwN>zijD$eRJ9U zj4)2>THk{DmejYVK7jgG=8xY!>yDjq`%&LU{B5ak*FC!H+sk8T0n`TyH3Zama<(1y z^+9s(5_g08t}5;(++DbbL)$Crdz#^X7amM~Z-w@ueggGqkjDCs5~c% zHavDxA4%P(eiHSI6+Kxviux(e5c5>(r%{)B*H5Q@2KBMj&lK$}>SL&%t+g~dUY~}x z(#{c{+jY8BZst%wpZa*}5`SB+3#pH@R$`g0UqpREx7hVeq@JdJ3H20piGTevwL3|8 zxsff8odVcNad%C+T{mkXr<3)Z2sZzx?gCOajvC)U9#ZUQ@86s)ZP2v z4z#*4+7`cs`UBK&rG7W{+o)@LU%y=$?hrbT9{#CMiCZ+(aIEM()bEv%O#bUO1SEZX zP@#vYKWt80MUPOQ>Y~&i723l;F`xPq)SsvRWWs!k`qQfNjLeDS0&r<3(mr#Z`2p6aRCiTy#zeW9BC9xrZ`a3a4_Dtb> z)ZaI!ML!UJNL~70H~pt>;!pk4_^Aem)IXQ!3+jJSpGEyw>R-z96?Kz(>R$`Lp|1J= zka)F!FXs=!AGMGDB#ier`vd^>UmQAu?BC3=Y`;_gL&l%xiKk5UzX=zl{tuz?ssAhd z&oG>e(8S+zAiGMgh;Q|&-wvj>$2~GbA7ZEN>sL8)$y1s==5FSssq(Vy( zu0gmo;c|q12z%_=MfZkw_W)tIjJ@k1T-N@5@4i13E>E~B;R=K+6Rzkugew`-y#mpt zHRdYDH2-RZtJ|BaUDSCj)tZFE2-hOqi*Rki{-UizxGv!agzFKmKl{bkmhJ5A2{$C% zh;TE)jn&UhgqtSOzTG!thntJsZ+3OUEeHn@ZYlo&LYHbQi(1aD2_^pFw#v3$oK5x) zA`Fzhqfp{+wRX1Z-CpfNxGUkFBJV~h@ed{b#vDAGsSJA)9!lso-2R07s>*&wP&UE? z2oEA05_<>_6k%u*J(y79Kc{JX|EJd5;bI<UKV+fBTJlehv7O!*LUZ($q#~Dpu z4I?~(a5UkGgrf+Do8Jf{2uCLNNrWc;_H)N?cnaZ};+#r&TEaP9o-?fI-sK*irQ+Ff zRJFzsPLNZl0O7fWW8)~{d4%UD_639&ie~yxIKKNir|=>p#GiHwH6Dc%2`?eMg78v8 z$$n@5yO=7q%Gur?%|LyOC#=Hj?nFvFN)w17GxBKKB1=iq4Ym25tglb z{E$FcCA^ccM%dP(*)3qgkWdf*giT|bCnB`#Kh9Rp4&lv&lL@aS)cxP^s)XtKe9dg8 z>Rv~9y=vVcyfI~{;a!9eD0;W>9zyAVsQG_* ze=okS|AY?_P9?PKKZM=+zwAfV)?-Oqj}tyIyRHa&{xf`<&>j<&N7w(u=VaUSpM-Y( zUwK}laR%YbG`1pqh44SZR|&r)oJROQ;dDZq>J!c&e2vg1|8Yend6V#MMc6aMtY1 z@_a@3GvU{SKM;OH_??{J+H*MWI}z4T8v?q|riMQf{zT{=a@KZH&k27a{9Vjn34e3% z{ORVmb@GS&HUtpUG6=AzLdRZu?3BOH2Rz8rj6}qge_?dFi+e!_pZ*y z)-?8}u?>ygX>3bl5RL6<45T4#w<yaFwu4FNPv|9k#liN=}TkX1aJ#;Y_&)2PrGL&FpE z92)1+7~7o)S>5w!oKGV|;{qCP*S(O&crnMt92ye;coNvSm_|y`iNZ^0Tq@%-hcYJ7 zF#V@-g?ZfI*!6dB0no_W(PW2Gjz->Wm)VL18UYRIf5W$06Rt_>y5*Ao%R{3|!|gdW z8Yb^F>OwvL*>DG==|7Dqu4`Al8f_XT;50hI$uzEvqcpCfadl!_b2P4{aUG2tXk6c2 zMQ+9zPZ}+H6OEe_{w*|aP3+sc7ZMwH(3ncYt$fLQ<4zh=63$&T?oRA`dS;rW(2)K& zO#f*-AT&{;@sL9q57T%gCMQ)i1T-F_@wf<22%i)_C45@=j6)gE3ZJ9#yo?uUyd=X$ z-kx*raz7d`3tzFKwLXo;$26wXcwfaCG+r~ZgBG!``8k^L@>naR#0 z{de=*#s@B>=!e3O;vJR7Cp293Pvx||g~sPJzNYbovsIi$<4YM|nJ2y#YqW3V{FcUd zG=7l%eSDjS#*Z|9GV;`^G1B;%#^2)nBK(!cZ!$C-H2$DrAAhvTzjgJm#P~;?e`(G` z<3E~n#dmmV&TamtP9>~MwsL6BE1XX_zvXEzU^(6Ohvq^=2hm)Z<^YMVMUb7#~{{xJ&eA z?`Z8>XLh2wGtEb74x)Jz&0T1oL~~b~Hut8v8_nHm9w>Vc;b5A3(%hG(d;i-uG~N5( z;^y{oQM1jtA5H0hQ~Gb7Au&xEhSEGpowtX7XdYsVU~L^LJWP1F!^A&~=8-gyr+Jh@ zM{B(uldQ~RX&x8b@}D5ii9Ms;;tY4F;t1hLhw`6HvqW1Nmh&Jem|_I0g+H+rp&w`fYw zn{U&6r+a^=`7X_w_T*UeJ>mO_Uqe8A52)!j@yFW#yN`g<{FLVZJOV`X3!1akwCTT$ zuV~u+Uz* z5v@kFvK8Iu*rHX4R*h{t*rU}|aSexxu4y4lwYG}u2-hXrK*oAR>l;DIi8hpTBlE~f zWb=O_6MrS?OSBnLKhZYt`AZXnsJ}v6^t^M2jh@z}0YrNcIsM;}XzQe|Bq-XJXgl$@ zPy9QmI51v6L^~z^orwmi^<9W|6KB_W2Ovrw{)q>#XfV;9Nv*wz_7>U1pJ-pNW%r4H0S_iH15`Z5>SOe4;~$ZX`OCC`)u0k@Fl*G@9rLqLYY*5gki(B+=1CM_I*g z-DAwS^U~NubR5y~L?;rN{wJK_&LDETnZ5kY7TJx1Za|DqCOVyH6w#?fr_APyd|J|N ziGL*Vk0k!?#$|MN_f}>!Cay(vj%rC&qOr2iOEQ@L6J01AM|3ICc%lhJn*Ya=6gwV025s+ zypHI488`IGe-o{Zh;F9kj`UlI9#wS>0nu$l(*NiVIbEKqM0XP1Lo~%Q*uvgLba(fJ z$ek)i694EvqKAm?@0tE7(E|>}e9)?x=V28eiHn9hpCWpUXeQC)M9&jFA&%z%(Njbk z3nCi=h@}6z6ioD-RlnXHbT1ISOY|bq+e9xBy-xHpktx6XzZj8;Khd5?QH@<7GwE(RJWh|6< zYzUyW2rcQq*^9}uIISgQENRU6Jh!zptyO6Ck-x|M#$Se(iNEaSgv$$8ptWLmwX{}} zXJv=B-dd}wxEd`Jf7>oC(|=lP(ps0+TIRIk+QN0L=w?l=^;BG6s6T(T?9X3GbYoim zXl+7kGg_wqwE9}e{o=!_wRvpQ>QC!jT3gUMht`%cht>dEThTg%*4DK4rnL>NLA17Y zQCi#e-1I7~?S(rC2MTu-?j+pVp`|kBE~>Sw?A?UB3-=HX7VatB%VAQ>Eua%~>3?fK zMfVpTARHn*P&ib0ki)ocY|uKC)+kzs(K?RS;p)Q?Vh$4?DLhJewD1_=u?~|y9Isj@ z$bX`6xNwAUr0^u+$qtiRr_eezF48(p(bI)z2+tIrB|KX=S~$jGoWZcWjmFYC&x(&t zH?3=3Kt=chGZcoD6lj0vQWrD&xS ze}+~zw$)cBrMaa$dLY9<{B-#_%El;{}a1uSAE?zrB;j9 zWJTLTodU$CmaQvkT}8{i!Q*y?uCeOwXSJ@Q^B=A2>8wNR2HI!Px{>z6w4DCGL(A#^ zBeZUzb(bni|68}wiu36C&z6RpmfimqXNqO++IQ2sM^4j!8TZk;-$iNJ4FY){r1g+I zcKzRI7M)7#C0ZJET945(ZKw4(ttWcU=u7KK;ZqLfH~mlSXKC5RfB9{&ru71?7kg!X zSt|XsX?;!WJzAgAdS3)h z{*C#eiXRC-rq!MQtFFYqCGj`r7qn(2ZG9=eh5%a|-?*YY-wMAIelPq%_@nSATHQ6T z{J+qim)5Ve-1hyA*6(q0G5-+$Df~##kSMcZ@JrWGl|*|K-=_Rnb%b@x%ksw zpY{exPc}?A8;i4vQ2O82j@RBSVQx;lpR)B&JX_GVhyRldThZQ+_SUoq(cZ?K)`x9r zZzp4W)!iYfJCOE{iM^8uJ6jc754+IbllHDwv<$lmcNgv<9PCicy;QXMzYH78Xzy!9 z%d6sJv3?epqQ!9A;Lq2htWP<8SLV}Ji~-XI+Xut+9TyThW4>C z?D`Mw4AMxJXE=Jm86qJ0DHyJ$Q8zmxV& zN!^=i-(t^&wr>^QCcIsEhePF2f4cURIcN9nyA{vJaU_vCzE_<^wd=U>?$8`GWV zx-qx?sj7TNr-%0EwEv_11#KtSvuOW7+r(dluV~x#AKBl~{#JQ(Be>n``cL~u5q?rM zUXwq^wdDDg_TRLBOLG2B`;RzETl(KN{TK6}gwxf3I&)d(&fIhsrvse@>C9uy&b-|W zo%uwVpUwiYN704kTv)h>a8co64wH(B{&$w7BmM6r`rqjj)95TiXEi#@s_t^;w9YI~ zX9cygqR{UD%D*z5RT6tuBU?XLS7;3@THQ72tR?^2F;n)sbZ(`y9-WDF)~9nSoek(5 zKxacbJJQ)m6*s2SpN{Fjiks5uYgZ~dn+Z1;_H$?i^KT*AmUOnIGoX7hr?ZuuTMIP= zxQh(#`dCMQ0qAT`X9ufpp5*#ZXD2#?>6rM_8Dvp2bPCYfRkrlMBmM7~{;T?)3hgC( zZ+B6Gj-E@jx~Bhh_M@|Ze6d2&A#|kh9Ss4Up>$0A=^PwizOefjokQsyL+3DS!a|4B zIih>)cZSh9($t`HlB9d;h5QRsPGZ{-kl5#me?FZHWLzj5mqf>_ zcoCgM|2r2ukBic|gib)m#Gj6aiOwWC89JBCBk{LTN=4IutpU@2d2)12|7Cl^0-d5V z`>|hkiO&D0>MWq=CcZBYAKazI-QC^Yp}1>tw_?TJ-L>D9tVeb?*)7mg+@0d?R;2Jp zivQ=`ByE4^?78R7o%h~MWbaI7H%WzoTjg*Y119MV+%CL>fqecyaF>|78L;&q+4nlk z?GX%U@^7&P)fO2jDSxj21E&9Cs%DsHO;~53kuyyOT6s?2NZSt~179%^G4MD8Z3ad$ zkanP}@K~4#_2-`fyZK8+cZS@r3=ibYgO1Pb(F{B!w=u$ph5G;Jfb@UB^gs1y;0Xpy znHezsXW%IYo@U@B+0QT_{U0#>7xO#=+5De@7af!HFEj9ptl+KQb_0Ie$tS+0N&827ZyluX%>w%t)6s2PUZM4+bRu z0}_AB{I~dj82EQmw!#z?FupLQWk|>O!c=0WHpY!*g=z7IP?(O=mlUR_SfDTih21F3 zNMUmdGf`NNg7m*I3x$;^%t~QCWw0TD!t500kTIulkZ`a=8FLBe7TOR%VcxWR6y~R} zgqQ_{3sP9f8L}6qu!s!%3lN3Hgo{tyE>$flTuQjKa2X0(|0&q~pMw4VD}DtEEB} zDIP~*4+=+6*ptG(6!vnl3g26(A;7w{ABDpx>@V^F3I|a*&^*)AtZ=Z|)|o>nNdF6m zri_hBg~RP(fZ6UnlA`lDilW=-n4FO7Wnf1hKFBjSnK*981wO3QPm4f~Mhr+cKZld7+|KqxPz3>L% zjSek|@i)u!mb7T-o^EHcw^OK4xP!ud6z-&OmsMFqcMIL(kMp@VC1sDG;87UJ{-RTG z-^Zf(QtCsYoc1s;Rw-!ts8FL&muG`QOGY#GQA0k3AP))C3>4aCWZT=N@G6Cv!qXHI z3Xf25yLU8&K85=!jLcG5Zy!)X6MqV$((pXVLuz*ng@-5li+NP|7=_1WJfT>Lf8nW# z87MrX+Gi=eBI7v<&r^7j!V4396sVD+@N!0G`|~vlA5$1h;T^@kPT>t1Z>DY(-lAaQ z@5r2am%@7#KA>RYpYjwwRMbb4xqU+68w#IN_|myi_>98m^7&$-kNB@Bd_9S=9i<__ zjPwNlo}v@IA1F>q;YSL;Qy5R-7YaWq{AXcyIGnBGuM~cpn3KW;3ja{}L#<2y3xAoX zHDP}NRfzrnlfr*y7pF*TWkYc`ic?XXk>b=8r=vKH_-t>;o<2)boFNUQI1|O0b8;5T zT%0v6%ATF#TomV!JtxIMS(P=dA;A3SR;|RpIImi<;Uo2=xB$hqC@x5GC5j7CT$19# z6c?i?{Vy&$(NlqoQ(Piz!ZI&KaXE@ht7@6llj5>@=H=Dy3c?j9i&~kYbE8#Vsgq zPjO4}TM4(e{~#5&(I1CgbK6qfF15w)AfFu_s<;!yA!2sUnO!LEn%aieVK)TqL2=Kl zV~%uJG{wDDwU1D`RNPPY{toR1@Ztf&11TPqGY8vE;;zp^PJi zZU{I!XO0nbtQFl@Q#_vH9TZQXcss=tDPBYIB#IYNJelI@@;rs&sd?-$F{fqYOYsbf z=ZHCz;#o3=Q#?DZwUBfeDxOR6Jc`o%;`tM6DPB04E&VTE;uwmT3NNFm^&exdpeXS- z`znf8PnP^zwR@d0wiB+Wcmu^-27l|${~IaZMDb>;`gZn-Nby#Rw;7X?>ZD@tqkQ42E~YC zGp}t?^m99K21V(=8^?=nid~8}O|p->PAtZ`XClv@71Jp}aU{k2)7tb(nc{;KM^SuM zo}(!~MDa0-W9%sk#fMW*ijPoy)ND;Y<@q>8(|_3-0*X(`ewyMlDQ|O(;&T*V75_X% z(|?MZ{G0I-MH7FDuVnt&Iq;elGuv&;8WFtg2mvy9#%6Xdmmt9+Zxtv?rzg zDCP72(%zKzNqs2oJL&)GrTr-#KGYdbI*gL(zkRGN6Ms1$ zB|JLkk5%zFO2a7~FZ%>ar^v9Y07@qbPj;w0rvH?NQ947$X_QX4s;u_R)TVS++8Ih` zQ@W6nhKAC)3OP@Be(sqs0hKiQFG>7MHu(^>1s-M zP_p$ON~ZrZuA_84rCVg*Kq6B=J|f3Tz8q|GRlq zOv%Jwe2-FJ#zt{=|M`5P#Tqcj+Wa)l*UkcINM}}P%{0e^qBDR-2VwPY`;Av z{%J~1t~33o^em<4C~2NwdR`710!lAV%uMNJO0TF&!$ir%pVC<2WY7OBy-Dd~N^gmO zo6`F--l3H1f9XBPs3#w&>OMx+_pTtUEQTm#4Lg^byssFc> z#!>oFp5IaWo>I2>GugLqylQ`<^s_VUWBcS6O24LCO6fN_{4Sh8`CdwYP~Mu7hJ(^y zl$WIRH|4>U{-HdR-2SEXALVH%PciuAO(;+4(D*XKsVGmKGKS_bt#CTZ(>n**GfvZVs|<0A+%K*%6n1X+j6Gg-}1hcPocaY<)bL?ue1jU52So3<%9ArX$UAEqN<@5 zo^8=#>iOZqBZNm?4f(v32-;(0=w|5G;or<~3IDPK(aI;GVRP_`j} zvgtqN%PC($`D)o$QohOsI$Pn=|FZNyCC&eO$~REHUH&&xzRBIuN!jVY!&|buJIfjZ z$~FXuzauy9RPip#srb7P_Y=U9R%@B>6ON!fK)FF#`d==JEag6B%AS}CWlj6bHUwyA z)>9+*Y|71s0Ls2Fpd39!>dW*$+`3L-`rX4^uX&r~C-zM=3w%Z2Qe9eSlT@3CfcF@{_iJmTmjfX1JMu z`B};@P<~F~CjNF2nyy`!?Gk|UOKG0$pNHjFDZfiu`d=O^hu4K~SgiTKN%<|x@5p{T zJGidOJ=v!G9%WNn${H8SA5i{~@;8(}qWmT0k12mn`I9`)r^;aZuMoSSNNw?7QU2PB zC!VF^x0HXTJkA*F!*{~(g+B;?q&z;on}hOCj%1UVdzZhd3`;GDh`P&d6<_|N> z=TFLi$@n{ERQoU9bd>)y-kU-=r4YPnWlV)PwKHT-V}={Q(l>E<)8j3NHv`^$cr)S+ zlFv+dGvm!JdltM|EyR-NLx9+~4Mn87!O&PvY;*gEz0$>OKYgWzCx(&rW;1 z1@IQcTNH00b1+6@gtv$l)8p;1MZ7)mF2LIpPr~l)&k=L3@H}C*{)2ZR-nDoa;a!1uaqfQ!-lcMr z_wHBK3+Lx@I1UqZddVY&c>??^ZCEm#A}(4 zj+d$eybv#uZNiJ!#+%rOE?zv*AFpS&`SkHd=Jx$~58&BYU}>{6VKkNL@E*dOfHwy3 zE4+vCG$MG9;617&kKsKfL*s(?gzP6L>)X?K&*15AKi;!xe!S<+us*ziXOn-tm$Hzo z=~wVx#rp*BHM|e-#^(O7_j-si$EgkL(eX{7fx-nV$)STTzlhv&5DJGEls?>>0afA2>;P5!-~a{gyLchkgf zc)tjLO`qU|_nSGmr#WSt{0Eh(@&2Te3cH2??{B<+l>A?z^uJ>IZy&d^SHbwoR2k#8 zx-v~_Q<*l+EQjf-%s@rzU71nLOjKr;F^kajpUP}P8x&;BL1oVD#)`@yBh$C}ROV9c z+*Ia~F)x)xsLV%Y0Tt&r&vbRMvLKa(s4Q%Z`@K(FYES;JEGo~%s4Q+(?qfaIz)@L> z<{&CdQ)^OLhU(>1mZdU|%5qfBrLsJggQ%=PWlbt8rm<93qLS->Wff)C5Kvi7w)DTU zMz-54Yf;&b%Gy-6p|Vb%VO=WgQQ4Hr`gV*e_WU<08wxiPZYp}D)#;tD*IEhVM2EP{+G(ZRE|>k?&52Kb^hdIWT(M5U}$j`74-gxMqDl(0^vK_!sg6xt9##dj#@ zFgGG9?bMb-m&!9#Vk&(V6Dpbhr+b^qNb&bm(fUv2K`M_@8KpxoTKG`zIflx^Vjf8u zLpwbl6Fx3{LinWcDdE!&)x@(@Oqr=XMR;cq*CxyUQFZt`8FM$}g(@RcQK8 z<##F*WaRVziW>s{vj5;!{ucgYS6HqCLMs1Jor3D@R5eUgp*jQAsjOqwsk4q%r=dEn z7`^u(+*;FkZ`bYuIzwT=a$1f zRQ2#@m)|_+r@9u^1*k4TbwN2SM0Mdj#3uh#7d5r7+W&u4)DU2d^uM~4BgHRG)#?Ar zRF_re<%G-UsaBBBid0uh8AI#9D#BHTs|i;Zt|460p#s;Yx*gSZWUotg8>;I$TgCOM zZa{T2sv9aKd;T-kjj3)TX45o@p|!X<)h#U6>@9^`3Ac8b=hP5j4%^!(P~9Qtcci*g zz8{9DbsGY-e|DvM5mk3|ju5}Qa1W|`nuG1ey{PU@^&qNx{(se;|4(&4;r{tSJb>zf zscmQu2MhHIfa*}$hYIxyfa>AS&hsBh^(d;RsI8-g$56HB|5H6qc)aig;fW6Aa}w2) zQ#)r)r8-Pir%^qd>gn>ghksH%GxxDe0II_s8e>)G2+tLsCp=$xf$&0y=4??H3ooI1 zY0g}h>HyU%s1>PRNp&36tEfIt^=hh8&gwN(ucdm6Vy~lmy^I^|&cy1C**vFu6V;nj zTl}q5-Lbn(p0`uIm+Bqj?-bsZdg30&RlO&*4K3k)!V$s&ss-z(@kL?Dp>le{iW{s6oXD5?R~2dGN_ZEr+W+f@5hJJ}7P)vofy!bGScKzEx`9qHVt z-k&=^=p5{meN9Ho{~@YlWIRmuNve;i+m8w#6WaS9sXpP*VzaG&O61eRXN1oRpL3{e zFHrrE>Wda)J%35~GSydPyh`;gs;}v*G&b+g>r~&!?Kdqj`wqS>w|9i^3g4spe(FH= z19P(`Z2m9fW2zEWBR{43SRfBugCjV5w5`InfTdLnod^%`qQ2mbD;#8gf|1Gy4 zs7m~+_fZ&WpWRBiq*Pt$+1?L7ZoI6?S_@K51i4)Z+!Q2m$MbW}C}ui5;c z+LYNw)u1+2Zcj~Z8r%GuJ^aVQ&7PjxT-0Vz)Qr?-r8ZN#Vnc0aYO_pynuI-2qBfgw zc50^ovgZ^I5)O8#JSP4!<`K?IZ9ZxXQJY^aE+AZRvOee%z&f*tsumS4mO4;dg4#{g zmZWwdwWX+SO3lsx*P^ye-paDnmZP=`wOs#eD^Oc84_}Ge%BiiitEx+@S**3VI<+-& zJJH)Xt)IuI%B| z&Q`Z4z5h|g^MvP9yTG~0zL1*D|7Bn7&}?hbh5%}pQM;VlHPo)q7F{X4D%}=pSDUl# z_G{&QozV1Oq+S7EyD@jZ*?7x&i||%z(*N4+)b6HsheGZY-j#;Pz9-LiFEy?I)JEjY zfE)^$vt=$(D^sf|zYPJ|e4tjPR8!3L;9bc;iIX&Ao3wJ{)cdj&kT?}YXWcx%`8`cHjoq3ORIrWH;{ zebV!Pql1NW3FoFhkNv%{KCf^-`(vT` z%r9I3H_D4q?ZVXeqrM3BovANMePim2$!&4!tIJq|`jXUFpuSZ4;ArYgi?<A&pN9GYzz)}X#7_4TQ*WfPwI+S!Ds?vku4 zX1$a#G=~kSoA^_=fgr7-zKNJkg_{XCr@k%qE$p|6`j*12gj+k5gXzE7=CGY`d!cRt ztJ^JL)OQjNacIug=q}WEm9bmS>`vX*f2f=OQ@8aW>JtCD#J_HfKjv)w{?sp^egJhT zbNxW-2jzJVrhW+ZBdOc_U#RQ;ue$F4s@wfv)Q^~Sy=g^z3J~?9g~tew6&@!%-l6&_ z@vomG+w`CMDbzKqub)bNSbkESM*Vc1W@iZVM}Vehe%+RUsGlu7M|iIAJmL8c^R2j$ z`bE^QQ9~CCFQIPYFZ(j;m&>?9cxBFCrQ+4ujI} zZ>2s!-Sl6@+l6-s@1%a0EiTpX7TzPgS9qUrghLBV7oF;M2|&F_y+pm7RjHPGg~r*` zt2CyfUZegQ^*Z%2)Em@e>P-dOC5#N8dY~g73Zrz>sJE$ia=UBJ=`^6O`G38qSQ`SU zkEDLTIhg$bb?LvGm)1wwEVMpa_)t0*rT#E=$!z@*>W@-4F{l0*b?JZI^q=~ZLWzIf z7JsNe<4~Sj|Ih5_slPzoY0HatZ&&>#;mg^*UG-O}+x=hGF^A@$Tfpje3mEk`gl`Jp z629$FO}tC}ed_O7p!-b7WI%B+k0;p#{0VwnD=>v0Q|3Upv8Gi{S z{&k6eUE*Ii@ux9`(B}U%Y{+oVvZtnTAdP8gtWINE8cWcaj>bGRrnhVj&Ho!S(wLpb zOeQ#unNz``F^e2#70zbaQoU--A-6e&gM@>Ha|!2msE~Pu^9kptAz^PUKx4tdN54s9 zA>qQpMTCnwv{oFN!{TX?#*)gglu+W|Scb-mG_?NH(E3j!pZ_;juncb7Z6~ZmL;7#_ zDl|<0X{?qxn7sy#-D#{Tek~eX&{$jcI>L2@>(SVl#`-4yjSYkw3O7o{-_WWy5pF8n zOt`s2mqAIkq_Gu^9cgTxT_`oSp|NdlZ%1Q$yNqh=kTQl=+(|e@xU+B<;jY5n94h%9 zc`JL;*h|db#yG)m>_cPU+}8SkL-YSeKL2l+{?j;^hE{SKx&&wprE#eE!z|Vu4ySPh zjiY2+qv`ag|xXgo>dTpBmgIFE*8ym7vwE}(ItjEfw~xLByGiN>WgF3b7L^X78> zZ(K#gCjT@va5S#9A*^v-HiR{U_&iR%| zdj%McKo|-mp*;drnY%Pb(}-o8_{-?g=&MU3h4%{|5I!gz<34#~sSZE&*sfrQ*{xex>mYjn8P9_|tffhE36FJWt~V8e?g^s1CoBclc%1z9M{; zMmGPqTH8{)1fXF{Kr}S}Z@eX2>pu-!|8aqeeUHZbs>&CC8XwY-{x_um4e5X5fAzod zxnjSd@uiHfX#7CqYvuVy_-)z*jd61Lj>h*XV`#nlQ8-?xSHLuWmYqs;ehJX{jiz%> z^>YHvDV6OH8k+n!H2H5x{~MgfX&5dE-ud{gr@&8+)uzu=k_u*mle63 zG3RQJHBJ0UpXc9PDfe8N<|?_pYI;RRb9I_q&|HJ&`U+W-=2|q@ldU13sUe`bZni^Q z6Y1h)a|4>1|2H?Hxhc(!^URw}^rX3&^4KdNWo$`PvfSK?=GHWKrMZpxZE0>VV>^fW z&fI~feZ^?*A(B+s(CcclW884^T*OO{ik_6 zO-=ioc9o%?oA{@;98RHms*GX6)2zw@Pp5fCZl5XUEa7mPXUjMzt+n6In&;6vf#&%% zzo&Tt&5vnbNb_cz7o|QlFQ$1(ZeL3CGMd-WyxgW<%`1dg3a=7g?a-Xld0O*Yk?w6o z&iQ)b4KyYG#<-t=)17|{O_Oe#x6-_g<_Mam|6=YC-YL9GcsEVcf139S?@M>JVYbf; zG#{Z^q}irfQb?I*gQk~%St>NEw$9Vk`cG5qKdw2uE7_6m{$GdgUSNm5(A@&;>`-Vv z%GnWiX+A(R&d;TUW=}_|FB~bnKdm*iQ}IFJDB)<~L&7n_haD>Oqqrv@HXoDyIL&8i zKB42~{`@(u$ftx)3!ibQ#VdC}pOf43!WV=u3SSbw>`)=E3SXo74$ZM@TH@c7_%}`b zE3He|68-$Mz!V;n*P%oBpmEeEzT{Rht|Th=2g{vdDZ;17RYVa)rC^q z(DE!ITvTZ5|FjktE+Jgfp)xN`Ygby!$X=G#YP6*Pwz138T7j0yKCKlUT8QOYnU?84 ztyMG9?A2*)M{5mQo6%a6*7~&8vTtQ;ZQ(k?b+a#K%f&0z!KhQf`68w)oPZtBpS zt%=QrTL`xlZYA7Ws3D-Wt+Vrfx>o?aPRqRlz~PRp)t2Ys2>u?kn6+xWDiKhm*B?kjR6DhX{uX4;3Ef(41|Hjq1(W(Ynaq^VPc8q0-tAK`Y~a%%{inX`4krxnmjXle4_iqa}t zZMCi;pw*=nXCYaB4FN3;0WA#yEgJ%8Js>pwSNLdJFVcF*I%aK+q4hAWr)WKrJ3K1> zG2!FFCurIFkFyOer%Bt;VW*J(t0)Dv9F07OUv&6qV8Nbr{o7Qh?>v!P<;UB_3 zg?~A8&W5%R?Gk|2zrz3Ur%0>tr!>YlAIt1djX%4LY4A<|WltxZ9^dpIf5zN-Ch;@l zYx3`F^6#7YTVR%O4*WUgHb^*FIF|{aKX)pC`16RI7k@tS^Jl_nJ_`~g_zU4bjlVGd z-uR2)Z;8Js{_6OP;V*~3IR3KuOSmM;vn2jfxxF;L>A!v4^JIkh%R2*qg}k^T{z~|( z;%oiK{j=0x#r?n3YRzpmGmKmVU-N%|P5ia+-TPKv$6p(N9sG4oX>|jO&8Ri0#@_&c zWBd*6I65WqH!{OrYPl1@-$a==#osL7OPkwC=xxc=zsPmS(_zpsq_ z@CWes$3Gwc0Q}?e55zwl{~-K>Q-AzJ@DG*q&@>Nz_UC_*N8sC3AKz{4QTRuvQMu=_ zW>{_h2vGk7{4?-R#2#PN$ztQ{^eO7Wy8M`{~GyRg@5(LY|g;H7XLc@ z>ofnX-5c@m!M_Rr4*Z+(Z^geQO|FpJ@HP3L)GK%MmrHdQ{@s~d*6zLdBk=E=yff-X zLH_z&XWk3Z?ouQU(-sL4VeQs9`pSC8O7iT^16W2q1RZx{@J!aWzL!X z41qfdpCxem^Bn#=_|Lm4{1=2T;=h4!`mdsf0RI))ui~5d%N~nA+5Nx%nk`2E1e*UVgkUOy*$Af2qJnA6Gq53mU^;^7Wz0Y@ zlZ+W1W(O{qnLvyG!K~Tgb7x2}JHfI9a}X>o|2YW;5iCwHm|#AFxd`SVnA?)Lj}y|s z7JqVkeu6~_7H~y^1+z=JU?GBqZSE8-;?O+JUM!1BFZTi)0tl8Q$n-yt%^v|BEJv^! z!SZPo!3qQ`5}520tduQ=n5|2IVAV`TgVhN(aGOT32Em##*0L=%W^DpJ|1DV8avHN9 zfejPpV5v4FaQk^9f-MO)CfJN%6M{|6As;0PHYeC3E4mvTENUx)Z3(s}*e1Oa*MrU? zg6#;lPam;jo93S06YNN^H^EK>dlC#$?9SqMaSjCb{2zkda_8MuwTETM_SjzeHts{P zAHlv><@)B90)qVsH2JrOmD!w-;2?qv2o5GVp5PF3v#t&$I5f8pBRHJkNP;7bNynhz zsJ!-Q0u2hmu?jrS_;jocPOv*JgA;SllL&0ECOC!QECL$>2!;uz|H0`tPYBKso;hi@ z5Db@()_;O?Wb4nLf&KYYMO^~enR6jQncyOVD+w-kRjR#&Km$Q=nTi?$tm!KzJ2$Q( zxLUQ>5Zp#^Z614_$m@kS5ZLoSW#2?#&wn7eMR;q<%eEna;0^+lcY-?!wD=R)5J2E= z{&hIn`(J_)&P|?LM+yoA#WWj1$*QszJ^56GRe~BpKu{;}2^z}TB*-5AnTF(np+X`{ zW&LRrq?^#q9b&7pUiApw_pwhfj$kB#`~Kcf@Q9)w5I#sS%A76FXrWyK5R4&s*!Xnu zHh7faMe&ajJTBu2;gdqse}bol&j_CtJ|}!$X!@W2;G*J71QP#1;vc*!GS~lLtT|i% z-yqPuJ$REK*Z<&cf_Kcp8hw}GJsCFnm+=9C=Kq1s{|P=$PjA_#|MIaRfZ%iC7X)9* zF#RX6`M->B2(tD6{0s6O!S{qt6@QS!kAzMh#}oWR@DsuB1V4+na2dJ;2!56QTYB;n zOi=L;;hzp={6%2mZy)RPzl2j0nD`TFAPA-ZR)laWb4!Q6a2mo{38y8Tk#IWsoBqp~ z!HjefGMtHUW|5}2XZtl>fk}`*j5H3o%BBAL&;o^kL6Poy|xFq3HGL|M>mT;Mrx8Lc) z<*aF20(G0VLdIJYE2TE!%Gs$Nu1a_x;cA4J5Ux(Ry%MfLxF+GogliF+;1jMbT*tzl zB8BS_Zb-O3p{@K_Tkhk2B@Z_;hg9prO$fIp+>~$&!p#Ubw<>q-;6B!?EeY-6Z+1$% zk5l+?8#S>l;dUm@?k?l>M&ob?@vhM$33npghj0j?R4&|^a2G=R<=33ke>H@=6YfR0 z2jQOCrI7o@AzkJT_qIORe%P1rV8Z{IR2OHsLwhxs*y`cpl+}gy$1p zU>RH@S|Ae;@-X+5x0YrEQ;holsdaLle2~GcH-vVeIk^29%|$eKdR!b5 z%}cZx(R@Vn8|gMVT7YO_84C&*N_(YlEFxx6W3JwtXmO$?iI%XQyM~7Jh?XK+mS}0B zWsKDSZ*8Z!7e_|RnWj0NiB=%mh-gI@LbMXmnnWuTtwywpy1J@$)oG5looIEDYosL6 zT0}0@+C=M2`d&mfA`Cv^V9nlb??TL0&e|8u=d^v54{rS^+;+_){?M$>Q(JnR|J3TyL z9-`fdcDD(zdk3rgxY=*CC(%Acds+DQUl8r>(Cp#M5$#K~pQXw&A3$`7nmCZ?AbTc> z?Ye{0w$$8EqC>59SLII5=y0NAiH;yTQak*0qN7|NTu+FO79NxL>Nuhkh>o{@I)_su zBD?>K=p^f^Bh5ZVd+b!A^N5BKolSHa(V0Z2+ngcFHYeRKqO(K}Pq$Iwy8kP(O90zI z+tTxe7Z6>TZ~H~*wi8{Vwl1YTGtp&4V^y?KfXIdbqAQ86B5D#{O;jejhRBqe=vt!d zi0&kk{zo?u-9~hyPSl(1>tjAQ3vUtL>d<)mLftOBBX_$?4tML|-eV`5^R#c%eP&pm z5k#8&M+Fsa{!dhz?0e*iuMpK_R2|BvZiZ!Om~pNM2`?XY6r{t z3yCxYL{AX8_kWob6Fnt-+I&uWhe-4PNb~>bc_Yo|1)>*q?!6>@*-kv;bqNre{u8}s z&USvf^U&?jH;CRAZ$ki)>HpwI>h>?t$hGpW$oB?c>Jdr&qYsEa5^0wJc6A(mY$5Id zWnb-2i9VCV=R|)JxijrY6~7dIMU>C~qi@7~OEhkGn=gm0beJ^Do*{i}_plkMLjNf3&BtMd|jGLWEN}bhRnc zp2j@e(+Z~(PEUJ=^qizUBkh?couBPlXg^DPR@(E@o^9|j9mn?Urqb;>XwOM|F4}{f z4$~f-sj*uIZ_jN4(w@hp!_8EOUP605+PBc2pZ1=#7ofcr?FDJCY_EiCJI{q_FGG6~ zTU#?`QQ>03#c3~L$G5$ta4F%^4$ay4WzDdt9IBksfAc(y_TjnD5wtY~7=Kh6 zOZyl_9ZUOU+Q%7bwZ{ujP^uGYpJaU2&?&S}SM8~)9VR?2txer%pGo^%+GknOvJIzw zc5a`O`<$n$^J!m3`vTe*sd!;pEBj*Fm*kCJn)0+Sr+u|*uMl1-ylP_Ww6CFkE$tg< zU#E^;pH;ce+pfM*coXfL(}W7Ym3B+UZM1KfaR==x?K@@PMSFnu-Og6=9%Z;!c%N{D zLsb=MmuMH$qN>W`Jz>RRR%QF7M!QbCNxNbE#478gpE9%q+9B;HXh*aY+HKk~?T#{c zC$^Frw0pE4R#l(&NZO-h>k^>-0PP1SHDRrfc179`3CCnr*7PHadX)BKDM|bBJpYrl zpQim(=A7+~XY$(TXpfa5*$_bc1=?CfYHRY}e%X=YU!naf?bjyCRL<)Xz^ym7-=wn? zZHd3-d7Jh-v_Ge9`mYRH0%~grXxsds_J_1J5VWQL#@HB5`%~JVO>Btv7j$N({UvQz z^%ZStemi>wq=|F;TSbkdt*ctg@ICDxL~7t@kI%Hd{S)nyRRiGOE$ zTcPdDAe_+_WUM%o8J21mI`+&rIS26?^?8~dFU)e zXI?rs^QSXkT1968Itxy8Q!5M8(PJMvi=?sgUyRP;GM1pTWX5NimnK=C&N6gvrL(Lu zEJtT|8OzgIfzAeWR;05wot5aUMrUO@tJ9vCfVbvkRvSd-3LR(tsY z_A%#mtZ2r%bk?J@z7L6~p|h#^C_kOe%rMU_=xi-xOW{`L zGwM(}+tAsL&bHQ^%X#?$bhfvuto0q`yc3;WWDKFRv(>uK1EcBeDss1UE5z(U=PEjT z(m8?7UUUwpvp1asv`_Y-v#*T(g!?pHHVhh_fm zx2?_*bdGUFI!6kR659M<#<4;z1a*#gwtei-pGfC?Rh>lVWIAWi(fq%2s>orfC!Nz& zJl%?J4%0bP#k2C-;dIVcwsVB`{x3TE{Wojn0y>u|c-R7T#+)KxEi+FVIqcehzP4(#v(9!R|9j*UQ`YLJuW)2ml zs?urGsnH4P)af+xoK5S7^}HqYg+W@Y{84JtN!_}1;;c67RgX^Jj%K=k*cnOZemW1N zE0gAV3`=1x#dehotNp@Y@g06bY8WE-D$JT-RW~?2D&rSomsUr<+ZcWo%G|cs%EGA zFWoulK0tR)x);(NM0XpygXykLcP_fCxLCS#)18Oz60+x|J0IOe=+3VU3kVk!E+kyo zVcMdKiwYMLE}m6c&L!zCMRx_dORH)bq4dAIob2T@=WH8S6lp&J&|NvJvOKGbSuJJg zu0hux&PjJox@*y0JLmQLZ+Bg~8`E7+A?ph_5N;^k$l+u?-$dl5!p(%63%78nCbkl8 zZ6R&}-x}SP?(uZDqdS!D_H=g_xr1;=x;x1jBHUTHi*Q%rZVv5}rP@Q}o^r8AfA?rH z8Wg&w{}!(OuaFby4x@V_-IG;3DXpb@3f)sPPx;e5jqZ7LPdC!KaRyy`{xe;B_&?p@ zLg{~3`rp<2AG6r=>0U6YY4g8`ZjtWAbVty=gzj~8FLfD|ZzIX;vJdYx-{=H*9rFbYr?&{O@`xPq#w1>TJ3-x&hs~(%KL}w<(nPcTM~) z#Q0GDk+3aP6IRtt-RLHC`*eF2l0}V_=lzp057PaH?kKv?(;ZFsX}b33AGwX8Yp(#H z`-m~k73n@Id`$Q_UHc0VT|NBMYM*kvc^df)-Dh+Axx7Cw(0zxl#NT{gqWiL(UlG14 zd`&o3Xs0yYH|V}a*A{JP;lM&1 z+8+Bt_$A%16g%1Ezx%D2adiKbVb8Rr`#s$sWc(-`Pxm*vKWVr8Ec`#=FT!6PIyXbx zOTW{dpr}7G(h~k3S0tAHo3T5w#6R9swR@$F%HD@~f8u?K_shsE&jG{-{x5Sd@rlHT5FbxG zl=wK}Ly3(Sk1wCh^Gf2Ih_52npFeG9UL)sgiLaM&ox?nvhJg6SEZm&)OMv)R;(Lg1BfgXP zcH%oG`Z$C5E@DmoC-v}N;sN6Oh(}D!pBls(0xWrn_%q@%@w3Dp@#Dl5;)u9PTqmxj zy;3LjGjVM5f8v(V7Y0Jp|2%n{_(5Xl)=f#`SU!o+^q;sdl>W!2|HKbCoY+s|Q6fhZ zKcv>j2p<+cB79W%n8P%XSo$A7N&K{`p315$`7^0a{2Z}~Gx77pFA%>(oaw(pUM7B5 zwXYDrD&sZcw}{88R#%|$8?q z{vUr%;-vKp;_ryRB>slj^j|(-r?JG}5|1-7PeuGa@vp=`5RWIe$$wf){F4HIb_}tG zmH3y5fyBQNPaw9%pUKESh&8Ol(tiv5o7lvk_+R0Flbn+&Nme6)#4VLfMKUkR)Fd;L znEqR%$+RTXSyVE;a0cOwd2KcXkjx@}R+7OavnkO2{6jK_a8BVMhk0N&1dz;4^1tGr z%%@cIlPo~87>VZpiRS-_#6OYvC%O1rD~l^c7ZJ&lvX@F5GPKSwL$WN%s?h9+Nj4(c zO7_Mi(tm4cQ{J7s=it_sM;12}s%Y7k>cBF(e1dK1g`5Iap5)5e_9eREFul z3=IK^hJZvvKynnx(b@8&`(-dWmgE$Y<8uGw6?KB}M3R$?w|#zc-pNx{97a+nIgR9Y zlG919BRPZQ5|T4X&Qq){0g((RIothmCtLcToNEa)=6vxN2rneLXz(#w4%liWMl{ZO0SCmbOhASt+7lA`%UCX6KI+}|Uq zh^Z=nZL+o+B#)6aNqQtLl95>HU*Zp5fe*ag}7O8VP{Z-d`o20EMbD!iP5=V|E zxj*Ge9w2!z`;{;mWu*I&G~HP1+X+?@r7k&-aBNkbF3iC;6EE^(3FryF#^}l6*#QQIgL|ej)inU}=9RnLuwa$shD) zA^DTulq7$V{A({IO#UYMCw(uWod2UYg%w?F`tHRZ^rojbRq8`;YI@U{XKz~Jbd!0` zKyM~`Gfv9Zn|U&OR(kfrM|ye%WN-E~klvhm=0Q0#m)z#2w*b9)^4fXn%_rX0e~h#~ zEJ$x*dJCmKViuXqUW}f}5xvFfEkSQ8(f46eNvl+e3jWnMv=xv$TZk2k{+lJoGs_N|liQIEDgkDNa=s?1bQb<%unxRSEbrhgs0LQmiwP3 z=5%wgEj?4kv*=wUV>rFDWt>Cr0(x5i?`i(uv-y7-r9iu0u%hkNi|N_qU-qTK%jiuu z|L6(rB|YN8@;>e z-LAkpEYSLJXP)71dIR)w{qNmN?>;$222B;#e{E$|h3 zugZ}4_r~VkF#UHny*KH7Lhmhl@6*#T(R(M4eOH0+<(?m?_+eiAk%}Lu31xpO{7m>c zy)R^#{?q$PXzM@pzR5z&9!K9P$#?Vz)BB#jQ{W%y{VL}lh2w=k(fipMvQzxUik9Iw zdQQxLSJi~v=MQ>L|No|!&Hv^3k9_`31I_MFA)J!_R5HjqW>r(upGIW9{?peGke&wp z8B{eR{h4IUOn;Cy(VvC>td5aAn{amebL7mNS^g}^T=Z9_KR5lQ=+8rc0s8YQ+kED4 zeV9M>r@tWm#l$Q`e_{HI962o>Dv+z z{gu)@dA3#LVERvgHR0;?*Kme?%zrJBYtuhm#ya%ZrN0;b_2_R+U*g~2fc|FmP5k8} z{qJu~f0MkGO|2^1A)C|RLYZ^@?{AgX(%(km+tS~S{&uprr$2=L4)V{$pT3O+md(1i zvrtPw{auZ;4cT3&^`E}2|D^u(_ZGj8a9{cd(ce$@{(0a5^z$X4EY-pE56NqX%Grhh z`iD7mJpCi+pF#gf`X`7#N_aH=W9T0z``FY|w&}m3PNYAK{z)Qp{qLWm;;FfhiNBcB z^A4Oz|5EyA(bwF*KU}qE(?3Us^uKTVZ-Le~P5%2As#Zfr|KdE=CArUKs=Zuz1^sL2 zUn%=4WyqF*@+j$lKiB{M4UBZ#ek1)a>EA^EE&4apzgOY6(7%=bJ@jvLMKQN4p$!4_ z@1%cM&flF~E@gebkN%_dN62kJSfJmOQKVmzQFbW9qhFDcz5IoKO~pF>#{bNm`!)p7 z_vr`p6Z)Zwkx=5_PtTmLm^j^Db+|`=6n)cwRcQ$5-!JAEy7v z;FGT~pOfA0eT@FI^dGmPdD;*_|4E^Sfd136rT=aPyZ@Yu&)b!kyX@+}K>tM4tzG=>H@8NBZM){wFa% z(|7wsfBowJLjTw7uTcHp%q{)DS$~2v=>H-7lm1@{{5x~VTKQMxe~g^MjFD4jc}Ak* zRE(TDWh}|aX&Jc|Bd25J>WrM;Hf`h#j9i$Jw*JG&nHVXZA2~B4wf-}5Ry#vdi5NLM zBW;m~k#h*=WaJ=a82tZKod@*P#QXL2WABBpVg<1)V#D6Bq9``7cfpQ|f(;eyVn@MV z5qtM%+rFD@vb~_9*cE%Puf4wW+$6yNoIUs4dFIYDlWcNlHk-{lOf<_IF->n$E09`6 zT-Se6=KrKtHi7lKYD5(5OKJcq^M6t{HHfS(Ttm1fskKPSQTS>DusX?Udml~wD zCAGcCcD73``3@0La7R+RklIOn=h<-;cO_-de~yBrc30ayNF7FM2&rMD_9V48sl7-I zjef6ZqdLAxY9A{a*_YIQYPEkE-{a>q)ui|3n!k zDSo2~;>cuDQxv?}g4W8W08+P-x=s0SkCftfl6s6(vi?uqP3j(r?GYOogE?dIH~7dk<=5Uo)me?YAy0KDfxfuS^IH~ zMWPeXrhp{!g5ocd()vGT=C6qSKPCT9ng5f@S(W?IO{zf3%#&1+REgBPq&!j$MSNjd z7?3ja7q1Abq-x1NtXq}6FYYLMg;Xn1wn=pou8#nz>1z9OqJNdtTclE;foylnC$!W8LvTZFr5xq$V4amZhgR zQE^k@K;dS>&4pW#-ZEaQMfdxq-PYNOquOnS+gVXpCQ0w0$RN@?itJ=nwjXvTy^FiH zOnO)0ZVs&~y4sxHo%9}wa)|VM3il#CRAld->Z7Fhaj4?HLYo2k-muZ`HEcNP~<|=y8e@%>-vwiy;!xE2rm_0M*8xoN77f2p3DE!SCPJv zwERDPjT1|ME$QoQO_IJ|ctbo}r6-vnnz_<9k)BNYcG6SSMF0PoPX7NfeXD}EnclYd z4i)bdze{*`G#>GLNta09NBTw5Q>DD0^kbx_i9cXTY`Y#5K1A9c{wDqiX?ysa3F64( zq@S>&>7NunMfz#d&yjXN8+6C;vqE?GmmL*`7JOd#LL9WVFR5*cbXp{1VvA=_Zs-$b$w{>A7*{e+x#Cte-{##n+pPo+o zJ<>0eenS~vA^obzjASJ4EPFlSGcAwp`8TC`%ZfIDw}tPJes``hC+q+82dbSV{E+lV zNw$wke=?W;GcwMRJ}0vn=`YC4OIj00`YY0|3p0OZ_(u3GX_D`}yMfyJzed7P=f24F%z<;qOGf$+kct*!bWZu)lBv;Q%rl+TGomjiTT5iEl#Y7&4oZ*`3TlGTTbI85x;>W(yU!bSSbF znXQw3yNw0iJCfOs%pfw`CmQqrcwwK}kxb(MnVre(BK@vOhTX^vj=17`kU3br3?Z{8 znf=B05)LJ^chYJfGW$xu-|V*13?nmK#IFB{94I`RstFp{y{;GY7%+n&zB#~!TjEOy-^|aI+?1JHDR4hSEM0q zl4&Ka+GIKrSKH}MAkE8UUQy&#;fzQ_Mk_1Z=QGKCN9GMO^7D+QfXrKD-d6K>)XMyy z%zMK3qYUD+$b2qYC_$^J-M{YmDpq!*h4$e8~pk^jib{9Qad zFIky?c0RI;lAYhg*#(5Q{wKST(Eb0fk8MKb5>^ilih)=%s)H8DJ9;J>_%kG(#dKb$!{f|pYqHxUT=PYCJF?r)alGsxCD}32>_m3wgzuuNWD3X*COeGm?h4xa zpX`uCxu=Tq|Ljn*d#kulQoFB;`w92AVD#xDJ6w?i$jbb)X8vR~tz-`oKa{N8K6@D1 z!)Na+RmuOeM~NTpQ2X;(3huBOLEi1jkz}tWdmPz|r8%DL2_h$wm1$>BQt@Q6r&x3A zdKB4H6Mh=m#Q(FS$(~`K#It7#$2gRJtcfiy|If<*v*)VnJmEOu`6jdc7YHvTJKj7h zJ3)BSY}ZolC1ex-&t68>{9o}a$X=Q7iDa)*@aiOD{%;rSve%LAsOoyMH;{dV>?E>x zlf6;Fn-cwGvQrefS!n)G_ExfYiQGo^cAE{ecSOet**jg_c=ULI>^+j1`HS2~cB;tz zNn{#Xw_6@o@Im22Ruw&6AzE=|A65J@vX7H}iR=?(pC$Vw*=KZe+4sL>pNkWG;-D|4D`hHU)gXGL=#llKh`KiOCmRYY z!YbKXGLpI?$@)LrRIx?29l3!rbji6rGo9RiWM3xd{NWXHZm+&d_A|0G$T}Z*jqH15 zUsv;)!Z#d>yeWK(?AuAF?~t{J|C=EC+?0Kv><5y~vf!NfM`S-%{F5k7R{m_x^Euhy z$$mlhd$M09wO>j6weTCV-|ATUF5dZeTqXXW{gLcXl0}33SxR01x83!ts(y2rye~Ed zko{Bm7g?EqR_1T&}kceB>6f+T8p?O#!(D#TODT9PfnOqAD&% zZYgq$JFemquzlz6`l#6HPC2J&9mBa?3kTu6Gm>m;dKhQp1&n?*AV@ zB)6)tPkhMb`dUJZ_airu-0I{8kXu9gHLc3FVl8rOi>#AG)+M)|9VfZW+mPE_f-S6}^|d9rtwgqtA{yJafAOK@_EwMk2={ep zRknZjCwCjUVdTywH=LY2Ja+)O1J&>#q4~eaA;Lq2hmkwHXSy5b5e`jY{3voKsrG2$ zG31W5DjUxTawA2K)3J2C@C4zB(I$wWEX^t8<G|X?rTU(-c3Q+?nJ?Cx_V?CUCBp z8>8B>QPI$PJe%A(5x2QGcOJQ`$c-a+8M(y&a~F`iFwu`!s|n;TvUP9nV&NsiOC6dl zev2=c@(SUV!ihZ(yd`oqxf?{TA$P4K;@1hUPu{*sN&H4~iT~#&lba&h&369gZV}!Z zowMS%C#~*~>`rnvHHhCWyoa3pKOW>%a_^J7pIn*TG;(Qj4@mYPxu?lJl(cbiNCHIq*ZiK&z{7mi_ zN9+}wZM1d2llw!0Ka;-xQt@wc|IBp`{zrZZ^7B|#eqQnmir5@SemdR zi2TB;S|rY#*A$RnjQrxWGfQAo0QsfJFDkYA7da^zPfzdZRB$@fk) zD;S9m@4Tjf{L184v0${B`99=VcSZ7j$*(5T&uZN(TH)l^P|&6T@@tV_TV$PN%CCqIDvhU7OBm;dKCCcjD2c2mU%I*hm19Yy&qtY~ew6mBJS`M0sT zEWd3s?Cr>JA92M8k$;W+j^wA1---MPwc45dF68$ozbpB@$nU1$V22{Rlix#Rh;UDf zM^E0!4>fLM*ju=da9{HKS^O3|smTu`e>nN!;s*%j|M`PVV}gT)hmb!si5zAmx>A%s zLbaMZ@<)+3^H<~;^0EKhtePK5ej@qf$d6X-@#IesIg$J+A}5hQ*%5oSE>L6?`BS3^ z`P0asZrpw0ZbLeQ{CM(bl0TRH7)8bk&oYe(&L)43@pzEuCGm0O6aUX&K>kAOOWmo} z1o9V&T%71HA%AJYFC%Z}FToYUE3If-cNO{T6}eh?jnJk5^4HnZHjHR$$WJ0~wom>> zhxWNRKiNpkZzlhkYHtzVO8z$TX6)o|7v4esP7(8e@@D=b_w;DOZWGealMW!Y3 z2gpB|@Q27hoa~%O$Uho!ZOh~2J@QYGe}TNrKOY?@Pm`D7=cBja*=W1e#dGAJx6JVy z_o9L?2~)zfQ0AY{I<8`ly!k)*g8D5AOS4C!DxZ8=Bp}};A3CmLg?v?{CY1l@8&R!& zN0vA9S5;fs5xVnkdJ=zGkynJTlAjU9?b&zv*AvZ5@^6rTPntK$za{cE`FBO$iH8~= zlkbyv=J^5nZ^_S+;6vd@Z@Rr`bRNAf=FavXpS? zo`-cL7nY@9Rz{(hu!q8OBFhVVQ`nHg3KaUPxFUs>91&lc!YX$ElC@oxLZ67+txAQ} zD6FG+KMJdhtdS_!q_9@P*LGD2H~*)w9)=pk?qOdoGLlxPF!oErEev0f*VVKD9Bz^#e1C{w8;lU0i zIK%|DjfYW?+ZPU}VCHYH_^muj%A+Y96U8YU8(s9HFp|P~sy$A4JcSb|oI&BlM0t|p zCsQ~@WKe+}6waq` zodg$9xKLy~g^3~)gqi{h7mHs);ZjG$qf@}9018)7koiYHGAdl9pqanOHNtD-+bK=& z&YBx2+)iNpzu6}J1IO$;VudfxGD;F z3-6&|(}cMEzc5w&ehSm#zyG#9X8up%A>qRgMIJF?wVHYgk5l*`g(p{zKifUD&;8EyM@RMw1 z3W2K3|0z_Gc$GqpLQ}!IP*cE|?Uc49Y{wm0!!CvC6lPL*Szu!(SzOTC78epOOmPv4 zi&I?Gc6)KLc(+IIMR5rQmlQ4)S6SO-C@!01>qW6A;mc86USjv`-|Z|Yq`0E`vMGR~ zEqExdB3zYXpG4DFk=2C#94gNmMohmZ#kDBzNKxi*k##7ptE%-VZbfl@ikndEugC^T zs{s@@RGy858%KSKZ<=TZs>x=;%_(jXX((=Kf_VJ$|Kc{%Y)jELjpFvg9ZY7$L5X-L zii0W2|BJh*YFDAmKk|g)?n$dXR5gU6`9H z@fh&~DIP@eFp3Aeq9TV-v`NHX?z|`-uHX?-gra7I;!z47Z9#X86^~VMM4}m~;&Bv@ z7db(AVp4mOiYHSv{}&$>?FaGGD4tI7Qi`J~nz2(nL#QdBI7WOd#j_j{w<*BcCdG4A z)YMZPm(-q5@q&b3NO8P06Kr-XUKG!F#fufZ#AFt~EYV+1@d{O4nM5X1yh@S8|BLef z;PCu*{}(4yoI>#qCAnE>Qvk(Vg|`WBw;L?o)ANdVs(2U0 z$0)j;JdNT#6z{XOT=8D_2p78|QJhNge!Jb>U6XgWW7#ksp!hIF_r^VBU-!6F?#iLN z&$;*r#Yb(Pa@S0T+S6GnKCb-o|KgL5yGQTZin{nTrPV1uL-Bix&r*DsqU*6B@pHoG zg)dN)`4?ZJm{BA}(fmJNTNbm%ZR>Kvd{jlTNO1<@ zQjw)7EiJN)F#hourCuub2$yphA26lfimX6sMM`}rtz=b}S^i&I#ZL25ato-%`%;qm zm-^Y_)4d|AEUlqdYf@T^(r%R2reu~&X&p-Iimd0(3rgz?`wKUqv^k{#?y>_VcmIz= zcmI#WjfI;CHx&*PZsyQVE{7&_UjaMZQn;0HYoQ4!Z7bYPxV=MbXyX|~X-7xIccQd& z!go=`rT}xK(qKx%DJA}2+Jn-Np1+Twv?rx~DeXmRZ*9WRB(0ghy=)uzqclv}_K!{h zi@S5bbO5D;6hF`+(Z!R}!3jB(*T+*jjOI0z4k!44(h>NNQ#z8;EJ{aFdYIDDluoB~ zj5W7yIhN80N@ntuMp8OX#Qb06g!npDN#sg zGV_;atPy8}rL!r?_Dkm^BR`Ll9i^1U3D2jL_GT4uQDe3t?*6LCd zSmbiauAp?6$d!~PQo4zf{J)g=f6471J^!s_&wrzIeSA-B=?1l$MCryTqT0!p+;xyp{lx!bTddO-oxnBGc z;iHr?lpdq>c+YWiiP964(v+U0^qd4w3EdQ69|0&mOX+`(nBPVh+e^<|(W+h$zDVh% zB$6^BS^Q4{r7Wc!r4pq)rK0q93CJd|_>l7y^pj$lQb4Jxw;-fc5vdAmQr4{tdxMg% zfJ-e(Z&PYhnog;ss&1r_{$)j8p)`}ytBTAJz9xL#p%WO|7QI19&;KdSdHxS2yZA%t zUEzC?p3?g&eh{^#^dX)*(LSQ&&a96q{Y2>#CHyqW{F#cM3%?NB6hP@KN;3b_H?F9N zrhw9Sl-&KF!zj7?KZhy)qX{e$$$qBvtKz>z@1xbmyYzQTf8cFO=}$aofPdjFKR4bKY(~E z;`PN_32zlVGk+IUs#Wp&STVW-!L0xZ{`^yQA-D(_}DZ%vcAmuc3&)))2{ZV;!nU9lnFMlPuM#(0|;*CS#S8Hl$T-sTo`|1#rkfj1a$OT3-& zw!+&MZ)?fS-tH>yk;I3n zxF_CTNn|MA-U`P4k7vLCO=|bY(}Cm-$3GqK0KA{^4#X?t9fbEJ-obd6;~j!`9-ez= zPsTe8Z=@0)j(3Dhg?FUzDB;mU`~5H8u@0piVco_2IK1N%egfW!Ql1n=#81IHQ>{kf zoth|5Q^bvMbP}=kf5OM$jqSPSWxTV5XA949s8%)?C^8Q3QoQr=E=U^c_rKnFSHznj zl>dA3e=qib#cleqms?$XSKv*>yAtmzyoqt#GF**!3!WDL-nDo);_3c>Pxt?OcK<)# zB!||-p%rfuP8LoP-t5o`@NUJs2k$loZ%=}E;N7XnT}i~I0OOYJUg3RFm6F`A$TU1X z|I>RA?=d{{f4ql{==Ua zf1XHY5uZ7&{Q2=0#!sIA<}Zl9kSU{)_>15#hQFxkqip`-_)8>wuHXOqOXK%-ar|ZQ zm&NbF?=@GebH^$!%e-r%8@HdUB@CPQf zn@h6=zMcr@Z~E zL-6;&-w%HX{!siqlVR8+Ak=VgW!^`an7?hs{`d#t%m4l1QXVk73;ctU<_9MU55+%R zvcr;y`M=U?3h-?Tkl+~n6Y!4}AAx@yzD*fPZS4PQcq0C(_$T3y!arG&QzDsRob9wZ z5!)N1mG%t$GeySW-;Y05{4D&d@z2J;1pgdG&cz>(f1b^@{iL0M0}}amnDO_9RCW(@#E+J;7`QAYW4{6ufd;Fh*du$s114{LvHMGb> z_z%bTMff%a;6IB0SQN22&VPbnef%dWyVK_>e636Ur=@%b|5^MBe)L{Hho4jYdHfgf zQ{v|T`1%Oop2^^+@w50D7qnM2FpKA-2)<1L_(l9u646Hh-=+ZkGJX)X!VgWL4ER<2 z8vfh(b$oMp{D!cJ-x4wNx0hQz`d$2)`0{^W3j_ZZY3%+V{29?g5&t#(*W*QFbYGDF zhGcdL2>&h1X8T9}@4t&LZ};C*?fdxV|M;_{(H|p9ui(e{=KuJ~`rp_3-~Sw6Q$U>g zE6UF0zNTzOitqN)xA@;BoBX|kKTw_*|400P@qfbq8$Wtme^#yY|KIWL&wufMoAXK2 zm;YPvPgVUDuk(GG|C?HS`~SHNmZWT-3wma*Oj-VKk@+akpVTfudBKD)M0w$aFJi=X zQC=*G*hc`$OHkJ0zq}OXUWzPDc^S&f+R9u#+SSN%59Q@myIg$sm3vcO!2~0RSj4?k zW%GY&Yzm;fiqNJ2%6%yJ6XGhzc+gYw2AYf@f|@&=UGR?+-lWL?VZ*;3yf zmgV(@{jJK110>imQEp_!y4!^E398zZ@<7T5QQnO5_LS`-0Oc(b{gx_jMR{wHZG`6k zl(&n9C%yyaJtz-Stu6jVcA{+NFTM-q%KWX+C4pZ;Lg?j!^`N01xHvgx5i11L#hfzLS{BX)gh#V?dMZA=U3H*bHyi6zMAqylrN`zG384sYyBVX zHyin7NvkU;PgL_OlgM2DU%rO&^^~toy0eb}PDc3#%9A3!iZ>?l$&_E9JcaTDly9bd z2jyER-$wb?NMLA(O7an)d?)3*Dc@zO;;pzx31$A}c=1npDrH;zt7=-Je30^Elpmt} z2<3;PpahT3#UH2qqYn1D=1sYP5@}HDjl;5G; zru-V^4&_%UcPYP2dHNi&M(c`{U!^?5_CUNpU#Be3FV9ROZ&H4n@>_G-#>#goe@FQ} z%CjiHuT&qHCf*P3MEHdAN0dK~8>*FLpHlvevNQS5HD>dF%9>=$Uqzi7TG08=w{i10 z?e~@gL_279v=LU|}mp!wVKAkonJvEJ3i0(k@A`6v5KbU=sbZ zs_GR7-6jXi5%eWko?sP%-UKTWtPqK%T!~=i*WKS7OP1A^-a1`v!U*pT3K0yBStjR}SjY$CoX!L|eg#Wy36 z$p@PgnEw;l;-6rvC~cB_o49C#?FhCfFq0?PK{$vY{s=%|>;I(HE(E(;(UkK4V6gb^ z1bfWRPp~J!$pm{598EBk;1Ghn2@W9GN8){j`w@xR;v)%;Q%AP`CpbZ<>p#Is|2NMm1f!Bxr>br2 z{}!~iXAqo6aHf3|9gMNB28@g)I4j|2D{>COxlu$(#t~dZa6Z9!0!;z7A({f>5l)DP zL2xm_H3XLsBoBWJ67vr(*8ubpAh3@B1QQ9aQvR!>;Tc-yYiAb;t|z#G;8B7}1h=U6 zM&V7u$?pC-f+;=jl6Y{lLlti&m_~4$1h+dBxr5-&gxeHAa5up{1osi#YZqOe%zd>K zOjXtWQBhp$|KLH3SSwuu3LYk~#ea|c>mLg~MvxPyUC4v0kw()C%ZxsAisQdo|yZ@iy2jP$LA}aWaAo+&HYJVYImf%-H=iauZ zYHm{i!5;*Fiu{$d{aeL<2>wkX_7Q+^9*1!xM3MOj=NDN(xFDg{_TfS*E=;&cbOaJE zs)%NR=$p`R2|FyqC51}~mnK}s$&x0$j9b4wgv%v-c}02?uAn9>3Re=YoHSg8(B0>d z9Qk2i!h;A`Bixm+AK^g4)d@EsT!U~u!ZiukvgGc-2-jBfb%b-K0K)YN``d=QsYFOP zfN*2N4GA~0Z&h48dc;k*3E`%(GS0af;r4`^6K+Ykg>@9iw<6ry8pg$K2)DH)HVl0P zaG#jM9SCE97ebw;aui#yL~ue^6-an&ibG5V8ZJN4~g7755k%VUcYJR*M8=?F^H2;tEgeMc8L3oPW$%Lbn z?Np&%{~3ccC%m8V z2EtnjClO92ypiyxsJXqZ@nJSaeceoWOSD(*+p+LA!utqsC%l*N4vkjV|HHe)?-ts{ zA8Qf~$$jq@PK~+khiQb55k5fpFyVuQ57{@r(b#NnJVN-Wjl@Mi-n(&!8qCKzCCXWEJRL>K>K=`5JFA}~a;s#^(OPD6i5C(*1{)9Q9{69?m zKP)O}Qvjhy=<7%*$6saIQ6cjWD^4Iym9QpKkG~2G8-&e-w+P+MpK=Cw{U_`a&Lo^J z{ma5v9E!Y3I3wY&DPmJVw6TP5C?fw4?fMVl+l23k*zdnY-Xnb9KKX_pB#~JzuEh{s%`0eF^xQ08BmhsuifXR?)fg;1G~ z%F^QVQ(1t@B2*T%<`tQLWnpXX{&P0UT#^4*%>Suqj;Jglz9f~UVwn?L{$;2v8?~j< zi%O4V=Koa8{H5tlWrc_vTGdLnV=F6DvETpN>0`w{RD3FZsccPUwM5yE%Ia#e29?dJ ztVv}gIrv&D~lP5!`fD(g{Mzh{c&q++uGl?|v2h$0TDY(!;KDjQRA zKmJl%hoj%3GLVXH{*Qvu6BQ~p1yI>ixK+IBsBA-JKPuZ&*^A0{R0dPop31INcA&Bo zl|jkKcZ_ZrQ`?=X>|*icJ*Bc+RHU-I1bYaFSkQXhGg49+nncY1sq8~#-zZ{7MP+{~ zSt`S*Tt#I#l~bu4K;T{l zGt4wXDw;1UBcvHAJdVoo@mK2Zm${V_O>AR3Nq91qQ96MT=iZWxV}uN@arZqWBL} zD(3%+nE6w=EYV-C;uTb`)P9&~&gqo4Pp+nN2bF86OqS+aD%VlDJ{o``HwY(Dxlx&K ziuw|tLgg0K-kc2hRuylvS)g)zbO(jq!%(@C%0pD{qB2#2yQ%2!5OamUOvc3Y`M zZ2fQCJu|uTobY)nTKr2O%}Z2L(f*;5RwQGsw8yAu3aDrbs1&Fasd!Y({Oxt(1IaO5 zrtZ$TfU0{pL#oG6sZc$TN|kCaDm5yTHA^Ue-{5m_$!t8 zLBSILLDgCJpH%*(V&<>l-@f25?kAk}55E<|;4sta3^ z>LS8Lg^NWpahZR0No80{xU_JY+1Vm7)gG$rP+g8{AF9h!?LAi#n*yk=C|pUnvTzll z9h2&-FV)rNYSoYG>JqFWTvMoz05;&YlYZBwx)as)sBS}beX1K#?XPSb2nPr^jKty_ zQ{9~ECd#&{aG-EAhq25?EB~)ll_&`?3(KEBzQn1pn8zv z2MZ6eT9cXoQ$398;Ys8Osz)aLD5^(C+$LpH9!qru)u~iRQax9ZOItOvZ33)ibG{Ch_UQ(ZVw#f%q7;8Y`6lSI-tdXRbWwQJqM29MvnSo=^2+ zsu!s3g~IW|3BrpUMh&T6qCA%h&Ht&I`Ac@iY?oGhFY3#_AClvYzf^)~U_qpqdAlj>ax-YvXGc(3q2hfyA?_fxG> zoklf9^#Q8SQhku><5V9~l81$l2p>(FJQg*ls_Q@1CzbOl;nTurB0+>y|3~#X#h(|N z|5JTY_>#jUZJKI{s?6WEJ*!T0!o08`EIL$MPv|RH76!slSaBF7r&^=>GSxcO=~NqP z)s&_sYzsTWuEVHRM5w+(^?jNi++GSKfqP8p5kEuCB`-JMhR6nKa@_$D4N2;Gw{f6on>hVkAS5YdeU&m=} zFyE@`JF4GDL8|8eNnbyy$EaWVe^vfp{dKMkzf=7~vOk4?3I7)U<1p#;KWa-;n}^z> z)aIqO05yHrHKaYAaCdEB%VpWd604rIh*CR*m%3`XsGZqqZisermG1aE+)+ z-29)KuK(255norhUX(|?KebJ%Z6H2Ctu_?e|0z)0Sh$J9s0p=!)V8L!nc|xZw-9bA zj2Hjn+fW-sZChpDPPn~rhbWby4R1%`PQsn3?c&;6mG!Q@=g zq&A+~7;5KH8!Opa!n1|vIF#(%xtfequUnFixj+ADF3gS|0k&~r}i$j zE2up|?MiC*P@70?GPSFuzna?h)UHwQ^8Z@w|JK~{+Y~@;l2HC%GyhlHDZ-nn-9haZ z32qhMCcHh88Cr%rg?9<>wxGQ=_fmVD+I`d>qBd1k_Y0>99}qt1(22z#Rx4ZoQ+rex zn|~xwkw2-=Pwg*i&g%bGhJS?r&K{B#>+=Zb6>18o+Z14VT-y2qLR|u?FC@OO zRawJDsjonNG3tv)dg@D1??rt{)tdiPUs||~a9M{*Tls(8{Ga;r!roDp_=?omqP`OK zzSLJ%+f{_CMj5F0iNw@blfIvDb)nY(bzA=@;IMc`F~yhUzh*uS5DMr z{&ksuednkZ^qi7hc>C z;@riG`hNB?++8cK52Jo0_2JZyurCPe2M7-o9warhZJqkEK4saq1(J$Z^!o|D`-3`UNHRlc=9c{bcH+sJrVwIzil(G&e$bQLcU( z_0iN%?>VNAebICAr_|4&ejfEREpkjB>SKgssh^cZ&Zd4&!q2t$$SLj8oD-i<{W9to zP``-!g~~sk`UDfWQAIa^)i0)gsfK+?&ykZY?rM+dP5pA}*HFKL`b6qi+F;zv-62-L ziu%>@MXe)x+hxQ0wbXB*ejWAetzS0)_p;qPiTZ8Ie53Ft>XW6PBD`66i||&5*0n=- z#oo614jLa)zmtX=|6MfJqkcE_SE=7aJxBds>KW?yQFpyerGCG)byxZ7)2Kf|{Q>Ha zQg?^VL$=S|Kf2Z*rv6CuD=@=HSE2qG^~W8thVJE_gI9l&`ZLs@5`Q{+`j(+pJxkps zf6kOI>fG1GN$M}S2=y1Kza)|prcLHvu_kN#YQjkBdFoZ_1?nF4B6V|q(?s98+TeXP zFAD=)*NG$Zx2hkh|CH2fi|p9@ zh5Dars41ZS8+G}=>HjdXY5q!D{Z0KJiT{lvR@<0|#&R^~r6F%`xX65_Y0NKNz?5!_ z8Vkl-)L59tGBg&Uv4jMR($M0+vA8MSE4t#>Sdzw45-c4>lK8STdMR%HZd$PG;ajg4q*Ok*n=y8hGHRGNXp%`AzHb93Pq zG|c?%<*s8lV*jV%#w`DD$p0JL)7Zf@HvT~oiCWRv$q^bm3wIIjN@KUAb})_I^?vOk z)Ge|ukG+Fh|2KxJ$=);$q_L0qzDe8tXxQ~11&0ZT(>TDjwV-7QW|D;yylDLl@h$ni8zpmCD;i55I*ro9|-Cqlz6 z0nr#m<5U{<<*&spaypICB4=2{lxGUZ2*=K)JX^AJgy#y+qcM)gh2rN6FK}oNJ+RE< zBTnNY8kf+x*ox{xweej*;+G4rpm8M)pT%H14Bu4UL;=Tub978rRX7 zMB{oIH`t|hXL|9lCkvtr*>Dx=_a-_{S_5ojf�(RiQ6>one> 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
-e4H_m2N@{J~Jf>XD!5{7iQOI=_rOY2)Qr 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 5R)oyY0CLgxuOa-JvYJWVI8PRsM{MbFTAcAOZc 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 z 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%0AbjUC*uryD8~GCF~&q>EF}k z_afL^oI$L82`(Vmk6;YJ{w{C;!Eppu)rS)tNN^~@L7uCF2@WZ;D$QOlg2RTy5d=rO z*pZ&rQH2b_F$BkoE>aw1>3D(@#2l3OL@(w^1ZNYROmI5EDZ?5&mEg339&*kwg5XSo zvj%DhI?wUUpG#0wweJ7X&$^AO^g@D*2rhG(iwSi3Kf$HSyw$B|!#P(FGzqTMxU(58 zxXRJ`@X-DTvi}6v5?trR^#o;t8wf&zvCgr@|9b?s_2n9e7t6*NJe zz^>JjJV87RZ4pjG&?b1DphNH=K|*jBL6_h*f|Ot!LC;5AUxqr!2=bAmZ!D%}5n|p* za1()l|7-R+Fe`DZ-rcNDgsT$VPH>0bO6E^<$Z1Y^15^4UB;5UMg2)^^G_?X}mg0Bdy2wxC< zM&QmL6SnX54DBT%_);30zZ2;GPl9g?_(fLK)Y?z>RtqhH-wCHC_(OM{1%DDwPB;&PC+;&A!1sJhE@sTR3dB%XO$qCX$fZ}oQ`k?51n4a%7W}C;h98uA0Qkd z^b5GcSqNv{op5EsIS7{}oRe@d!np_+)N~Nq6kw|6Bb?g{Zk%}t z=T)CquHMto3+E?XK#w+N6~+Dkq5J| z6E5dWyZq-pe_VlZMZ%SgmcT$}6}5Y~D&g8Lyc*%^gliJ6QRwv0wIn=9VjaTKF6mpq z##Hq62<877%4|ruh4cLgXs9Eggqsjp~Bq9{~-w z9m>o8d&C_iAo-mL?YbV*yffi0g!_5uu7vXc6Yfs9kB9C-xTh03|4F#Fp)`ozw;)`8 z{|V^76P`eLAmQO2bP(ae3YFSJ91kUQ=fCw0F^?ehuf0P5{wvh?U(P?q(1~Lmk0U%@ z91nHQ7)Rd%2u~tBS)o#RilhAhggOFBc={mQg#`%DqIn7pM`|3npQMFdov)fw24T z2s?y{s>PPpHgav62vfqF344S$5xV^kGdZTruNCHw;~afDFurCS8-TYE+TwrIU^S)D zaXV!*CU+28CErQ-nGJTry9nCzN?*TmB!>Qt}j`{QoMcb6ns#!j}l2CwxK7K`QP7vbA4meZYMz z;mZR(0|9IL{}9Uf6TYq>5pOuYN%)p0C;va;I}@mVm+*ZpDZ}?{dUD|p2tOC_23%?}%N~>bgU(0nM;#2!9~_FX8uUAX~@UYrBnN z3H+!A74Z|HFaFiZf04H#{FU$z!rwG^guiQjVn2=dKeb}9pDlsP6H}g)@?R+1Y08|7Ij&+5b|D+1-&9A{T?OrUrHEYC@KuA#g|`J2jBo?De8 z4f8n8D*^H6_s0eFsL%yPNb|y!7tsrv+gQ8AgYsgOcc#2J&PsWm!!NV<)t*` z+0v_Q+Locb8s%jvuc}d2Ue0lO$}6b3%PTsrq_$A#%8vRAFmax^*dJG?yhcHbZ%pev z<+UiUO?gYo>rmdrIqOm$?ZkSNH=?}0mt_OT4OLRBNp%Lx(#C^F>DknyY({x=C$<=f znXp2&1wdI-0Of5Qx23$DE7`tKLRt2ovTp&GcQV>TccHwi`lk)y@^114m3OCn1m!&_ zAF99ZD(^{oFUki{-rFDd(SLY}zc1zehV=f@FyLEVx&No^-~USTV9JLK1k}3@8%iE7 z;%ZCoNXo|;P5CHC_y6eeSjs0;K92H<&OhGq1jjLkg-*&R6*T2jL^z-FX_T#_o=*8J z%4bkMQz!hbrEGO%ox~Q9<+IiQ)f3GAUrO1A#`&rf1!)cAJ^4b%iySYee2MthH0tD+ zQNCP{m(HYE_WzsZE2#vOucBh@`wz-B%2t_G%GXe?Q1<&Dl-zZm==GHKS+Ub&DeL23 zr%gjxbY042F^jMB{&klY-sMORUgfY(`DMyRJWn~M{21jX<(nzDD37DurkqjkP);lzYO(L=l?eq8-}k?{*v;mT8oxnqx=Eo*D1e8 z`3=>!m~T>kOXFAc+m7#0{?Cx}uEYkR?~AtoF)921zexTgm;adZCniJr)1l;Nls|XQ z7X`=Zuc(++{F=&Sl)s_;8|7~)|L8s8JIeo+a`l<-DgRK=uG|Xp3+11R?m_wIq1dkz z$ox)OZhy*u7)sLgR3@Tg&Y!Lh%*zFnU#Uch%#V&(X&!ng32f=3%bl~RA#3# zH$mb z3`G}T`Bj#rvO1NesH{k3X)4Q8(c+(q`~NG;sT3wG&I$!#NM$9*l^s{1V!f`AS*;+P zzXp}HsjMlEnbXQzMT*6v)SC6EjHa?BmG!7>NM(I08>k2#TK_nsocX%9V(%IQ?jbXsqqMJN?r0qsm%|6f7nTq>7RIgiRkRL-ZOn}4WWpbyrp zPVA?4zj$PGf9tPYqRuSNWmMe$+k37xv|7RJ|Fu-i{$Jx7Y}8z>mMWUn?nyRpM&&vx z*NbDFP*HC1!8O*gq_<1ke6NI5?x9kq(xXzL5>u&CamP!=uK=y+3Q#Kbk=J}>SS-3K zO)4$rS+&$wx^`)Kr9&mr3P*I;F;y$*u}|erDjAhr9n6|c!+#tVzx=b}mw#4t`KK$q z#qm}ux4GEu!wS4Z0*ZJSmAjRw-E3g0RJ41kyg=nXDi2b*pNji`Ou&|TvL_Ewd7jF{ zK0qF!@(h(nsXXDue~ilGI!I8w#Z;c8@)VW9W5K85uK+GX;JzW7&# z|3|54+`UW1EQt~CYXGW;82usDNxe89Q89(zQTc?*7gRp=(9aw{m;6rl{ie@ll`pA$ zMa6tR7X51~->CU4sKECuMeB#ZQu&^Wjkq7E{Akxq{ZBx#exmZTkFsCJ$EETcRXgNk zp}$l4!-+pf&RbqY)vkbB)o7}Jp{kpI^jPQ={V%GMQJ+LUd&{U!Np(Z2Q)yjY zoto-jsZK+66xC^|PA}(DbvpBjIWYs(nW@g`^h^a)Xdbibh~q3&XH^dw$j?S~4yv<@ z<4me^Qk_fb{*PlhS%T`^R2QT=57h;z&g-h?8%CMG&^CNri0a~07pA(%FqK7JezAd= zC+(aisjgtLs4nG?OH*BDsAO5^Ea$kqp^L3Zbq%U3QC)c`wu~1RIjGGIn}eMZb5ZR znGstJR($CT-InTJRJWt5vz=78*K1mJ2ge;9cXHg>P|78M{W%i#yM(01N9!T|Qss~X$f~x#KRNeVgJ+z2U^)RY( z5Dirw>3WWuK+iE$$53_WPxUz0ApZ~56DEjtBGpr=o-|Z)GSyQi&~Tc|pI*pQJ%j3* z6U056s(*T4wQ`+H^%AP*$t>6srFuTq3#eX9Rhz%gxk!X99&Dsbz&C$I_#Sc9{{og`lpRBxf$rrIe&W#Xy{)vl6OW>Uu<)xHzj{B^>Y z$JKFEZ=`yYn5JJ{?q(5+cq>(H{z|Q-E?aR2Ra1T^)w{&B4H1dmP4ynC4^X{VFWQfF zsNP5Q{(>Hf-lY1VGasV*1l5O!GLJa(QOCy|A6HQHrqfS~w)^Xl^jFM(FGhAkq ztItw>h3a!uU!-aRFDSP@A$p~~L{-b$kq1|!>h`~?wYvUa(pK!%SE-uOHWT-{@^5bn zRlomv_fb^el$*V3E+E6VsoE4^#D5(9eX6P^rux3)2WoEfkBRe<&YsyEXRFidCqx0& zPl*I`N&OFFz#nJyrkzFJD2)W2376 ziR#bFx!U3vB1`>OH}bzZ{;n#L&HsbypCY1(M!wRDkw~+H(L|FF%|bLO(ey-<5lyQi zM3XyCLFC_mi8G~hrgGF35Jb}$s)nQKMEDxm`7;pBD2`-iBAVG{{P6!kepaHnJk+Zz z@*_ae?9Q3PaZW>Zb!l*CRP;9@o&O=4N2QMDRVUQre2()QI)6cR^=KiYg^M+Y#B5~} zElRW}(PBiq5iL%%#K;BDS_Kj3DNow4+MdXoZ_A;ctvqjA4Y3hFg}*HEk>T=t-h~5m`gOK=c&R)6$@E{fr{Ynz;)ok_(9F zc~y})VWJm_UefBwOr`DN+S)aGncCz;7W59$EAo&>uVV9yy3lJxuM_#P zMsE?ltpa+@6PXgd1A6}7Bl>~peWEXjtdoCce4-DDkS0xoRz_PtW{xE||AY7-Gz=lPjP=YNV&qF;#qbb()qbpD6v zcSm>r6dLU6B+F!NVrr8ps3x=NoJpxoHs~-#HfmE)n}HhCrlvNf%3GUC)#6JaYJT{q zHmzErHl5@2h8jWQ%&5Uzn@Jf{ax+sKablK&qs~wpMWab=HtP3Mo1OaX)aIb}Z)$T= zJD%EH)DEO(s{GyA8qo$zZEkAwP+OPUywnz@HXk)V?OBukr?vpK1zqz(%BPh=sVpL5 zKrcpZd1{MOTgv5^ptj_AN#`t0Z5fZXtmAUyL#eGmZB1$`Qd^DMN-n&z<0_8wIu^pz zRv!{;Ou$@=+S;zuzyBKKXEe2KsI5nBQ)=r|^OK*Rb7~t>+sNfNcHE@U>GWpQwx+hZ z(_47zTRLtvKDmORwk@^2sBK4WXKLHK%npt_I_^}62~~T$P}|jY?&i3=;~tKC8WzIT z_NMlCYJT{$wy#Ir&r!~QYC8Wp5FV8AAZiE8UfFq%+9A}A)tIUs>Ufyr;f_Z*9!c#e zEjVjOJ02q=VB^lv25;>+&FPAM0=1W@jiF|Te_od1t(_!$SUZ_oM(q@8*HSx`+C|iK z{?jvdI<+&XolEUZFOh%$RXe-LDz$S4*;a=+&jrqRl=Fw0d_k_{V#iCUT|v#i|ElTx zFKU+;0zzfa|1Y?9mD9>UwW}SkF?0>rQL9k9-su};pKD`f`c#1>$G|akEE{?mtJGT5 zB4^g9S$XS)LRTJ3OldWTskFtB&W>Y3&HwySoYXlzYJHhU6VvFrYz5@w`Zt5J9t!-=cqkD%-ahd{Y6PC&z8!| zGUL81_wMuxwYRCgO6?75uTk@x-%PW0HmQ1(nyvh8a?#O2mw$)aFPffe))n8S_8~R% z|Cn0y{}iS8KogcYA5r^krQRbk&FZDU8Z%%zK>YGsiEA@@3`~Tb4=cc|i^?6jH`n=Q^abiBl`5hOa zzMv+02`of?;esA=7Ipq&)ECzxp}vF`36fmWaVbORFGJlzmv!cH)K_t0dB+tTS9H`V zAnGd{O218WdR&eAy3|*9dJP4MxhD0s)NSf(JFa7>pkhmIYLlM73li#Za0Lqka_i!%dj_5!8b7_An#VfLB~Pbbp?(JSYp9<| z{X*(zQ9sxAh^e1V-HreFedPLi&OhHXc7e(wv5Tl*?!?8^<@~4a{vQQhW_;&dLH#P~ zR~C;#g<4a(fgQ+POFg819reINucv;4#~te^Wfe*$KodPaSm%jX53`i=g0ljF?=)9G8O-!^iI{CHly zw^P4^`d!rT)M&D)#B5IeZW&~CfO}+$#kr5h3e@kXF){TAs9W1TNc~~z4@r-mPEq?l zLS2VH^%A6}e2n_z)c;NW3F^;Nf6|tn)c;BSDP`W4pn80o`ZHc{&pJLg2vY0V`OiYe zj)0ovOVl-|IBoy`@}A4TLj5i3cK*`@thX4N3&^l&%{RwubK$o=$i`F=_g(5gQa9oE zHE~;K)8PGp`iIoNqy7=~&%6dccKpQgQ`Lr*S2gpw;}_Jw6jPk9sDJImH;&(mZy6qh z+IabXNdF+>4I68ko2dWfHT*O6-?gDr|HbiF>c7c9WVGP5NoY(@!~XwEuNX8YlS{2JIgKe~XGG&TB@O@oug26`Ei|T4b1QUO8q*cD^Jkzj zFO3=1h>e+O%uZuw8ne3Q5gPvemzArS;v1u!KbxvWNzXxJ9vXAf_#2J6Xvp)U;a`{| z3CIPc^T~#G2|&Zo|2O8Ru?UR?XxMJAMf6jnjfEuRYUML*EJ|Yu8O+9FG!`H5E!2Ky ziyBMOu)qDXxPAqw%?^!aX)I4;IrVDGs_nm8KuU`8O3y|# zHr7zO73IPBHfyK|o6$H@3&O_cG`66z8;vb#=#wrQThZ8BIz?~exUJ)Mj@#4NL1i%k zM;bdhe`m*CX!!TP7OK>Dr?H>&{R-&Do;0-oOGBH#H1<(emCC+`&e@;F!Ol6ru?Rho z#z6zi;P!#WAs%`t4PX2>e7)4r;$M0U&6wLRL*r-~SJF6!#>q5}r6FICr|#c>Nx)iv zj9xZHpXlgY0QT;0(Vi~mNTy}3q6qfVpj*{INnXjF|>aRzy-4Z5Wor9s2j|K8zg zw1_RmHnH{64zZ2ygvR4Ex-=f4kqP#`Uf;@Fup;7C80&mfH+d1z{5bFN_#(T=Vgx@cM zXnaWH6B-}U__zof3VcfAOV{=pjn9X|UyPTb@s)>uP2-yhQu&V9lv^f$q47NpUG+fY z2O2*PH4OR#ji1FCl;~F)zYXc%Y5YmU{Xa!k{}4|-o=-e2u@?X04D`=HJP+}V#3RHr5znknt7+X{Rc<1lg?Mh_S=FoK zQN(i)&qh4ELQToBqh0@;#B=G<@q z3Yy~M6^U0NUWs_+!S^z@Z>~C7m3R%})tp{^WJ^B?WEr+@eDsaPYZ32Cyf*Q6#On~R zN4zfaXsvwACYZ&u53J(#i8oNXW>jPM|Ets+5pV3p--LKGVjcd`PcnY~M>1PzE{L~u z+=_T>35c_etL#Xjy^`3TNW2^IF~qwQ??t=^ z@t&#y8;n--s+_%veg9WU?<*@B??-$v@&3eChX-hoTB!|fs)`SEJV=i!qa}AF@u9>P zbeNc?Sz~2L;Q)h>|?9acZokBeoy<|;=DiD_>MpH$B&3V7RQE_HpHz( zJ|+IfP0DA)pKCP9ynNyKCGl6*0f@gY%#PFF68}Q{9q~`Zz7rw&?}>k~>LvbBl`M`A zOmTGnM>!wx{S)B$H!-bi*-y6XPnr|S19s5rdTdTi)BTFgNoY<>b5fd9tLdAQIZjS< z3e`gs$0-LLqdArANzqA~(-bt#={(BxdX$D4XwEp4nTh7iuEEd$E7U##_S0g`Q8X8% zIUCK{HBzi8n{%ksTCZ!)Nz;!2iMD+)!-79I&3Q&{@uTm}d1=l!r01u(KtUVQT!`lK zG~M_&7g1krE=qG5nu|HTIL#%r;br4RK}*tHYUG`pX)bLjrs!oo$kzY*G;ieChrI|Z z&|Hz`x-?g!xjN02Y5F$;%~j-VF)x;x`sQl>KKmZcHE6C)b4{AQ`D+5#T&U)-*RH1i z5m@`Mrrbt-b3K~Y9P86OlI8|9H>SBE&5bl_Y&ct2SMfKY`FEO|(%e!by1AL7)x#*7 zTd1nV+=}KdG`FU?Bh77SZbx(5k?T(xxo$~An%mRdLG*S1655>A+{p-r zdOn!uAv6!Cc_>Xk{ONq{9;y|N@Dpf897WUWXda`ktI%T|k8?bp<_Sh<3RBRD zD!zT((L9Of$xc`%&voKd$I~27r+J2AN%Bm`vmDQMJjYO>W-ujS|NpB=R!hp}g*3Y~ zFQVC|c`?lj%}eBqYhFroEX~VkUPtqCn%8(?ub_FQ6IVIIs!y9RF*Y8CsPquy90AkGi8 zCUN3Nn&azVp8(LbI{8JCqU{Kf;cuAj8gTxg`6sQ3X-!n9QqnE=!xWlZe)xYtPflxF zT2s*4h8DCop*1C~S!qorwXLZgr*WLt(O&_~i`AN*)(q-(tr-o?Pep4c$C+u33^}vN ze2&-!lKdZ!ood{cp5&vzEUCw3eo|jB8ugaXD!y)-$aYXsttQ zMOv%VT1gX@6t3*Jietg?mA|dfT5Gt5HMOYF<65-VE@&+_TI$Wt^MU^YaQVDcgF(_?V=B1LD&#BW70a5)-kT!A|6P*8PT_SB#btx?!{-LFVKw^r% zl2(=0RkW_7vh1F$bDcS})P+(YlvbpO#g-+y9o^|JKm{w{9HD z-%P8>(k--Z9WwQH;7Q!!cqgs9Y27tG6;Je@q0D`>9;bCbt%sfefa8O--2Y!xor?1a ztw&wkV?`=XKSAp`T2In?n$|yu3VjQBP-8j*L`$w$mw$dpyx@;77OH4j7kZ7>%d}qc z>T-{+BEBm5LEP7Ay-({6TJO+$)0nh;3s}V4g&t?x5m4j2OY6M>Q&s%|t&eHx6JS~& z8IG4Xg4U1j_&durN~(VkLj z+mky^;fN%QE9Y&u{{xv>X^)ci zP;@!}Y0o~W1WC?Gdkxxi(O!`DUun-n`){=8R&rKR#VBs;{3q@C9OqXJxBdGslM%fT z?PX{$OnY&ET!gm0g_-w{Cu`E)lJ;7(H=?~Z?e#oA>(E};qmLdhPuuT*P$vBdXxm*t zu7~!8SPDrbX|!p{!Ms`@f!SbE81Jr-jVh;{~*HShfNu@_oVF>ySa z0giun^!?xVK~5iRs8y(B?C_!Q&9(IwK>KjVBWT+euqixhD0cK9ikQdJK5iJxrhpS@ zpGtd-%b!U5WZEbBWb~fUCX4ndgGWn9kEheQjrJLIPNRJ$?TGeSw5znwrhSf17~1P_ z`&`<7p0jjd?Nc3u(LY_ZD|;m(bSX9~bk(pBAKktHYnPucUoF?W<^CL;D}J zuhwjC0);_tUrYPCL07i{XltR zy0jZ~YzW7+tsR@RZ=v0y-SMopl~2_`LR&Aqw7ax*1eA8qvG3?dK&|Qq!sBSW|GzE& zKkb_fzSFnTeu%bJ=H0H%%6o_N?{xGn0M|oX{(su{(!S3K6L$Ig9sLMU+m8TA#!Q5L z-fMY#g!ZEz>oLd29iJFPm!yB*CCR5;{%OZ&9PRw4@$LMlNb?DnOUnOW#PY}29p4x*rSmP?zW#6f`oHa)0_}Il$D;i{?JsD5K>HKg zA9_L`Iet7)D`U72{BQgHKkaW^=G*Zyv@PNvw7;kQ6K$RUr~PB0 znYO#*r2pqap0-{AX#eW?o1?!1DAu2JCK^QS$p24AtI9#d&ZKk}q%#?vQFJD!GXtF| z=r9bOlFl@A-2dNk|9?@>9bf-+RD_N4x@*a07I!n`8&go_7EIVFi71;@68#)`&*__VCu4)s5kzNqI{VPk`5%v~ zR{%PDIqp4_*_Y1YboQfj5S{%!=m1CmGN^N4A?6&}e>#Ua9_l!B0Ts=v&?D)bK<6kr zKG$@PE~3*p*5p0PagP2MkOR&b=bSi{JlP*lF?8b8A>Zu(g>=mRUqI(fI%kbs>>J;m zv&}(4=N!j#<*d-7F5;tez8-C{VKa!$vz?3RBy{|KkIp4@Zji&Rb19w6jBxsLI#)Px zrQ=m}uA%b}&&JitkBJR(B^MB#>m08i1WDUik65A;&}lgx(kVMpp;LFF>KHlJ42L=! zuFd}frqi52XPZt(Vuhs5>>YgqMkl4y(~>}RpN_BpJ6iucN3Q^MbpDghP2PMrJKjP^ z8v&|S1>H{P2|9Psd6dqbHZjq;Yw(3>=WaUpjQoBNoqHYcbG+Zsi3c1Xr1Oy6#hr&8 zACbey1jKnvHLu)0E}xans+}k4Sf%}w&I@$h_;;QjInHG+0k=ihW*k)-|99KLJcd7X|mgwFqXbR7Yr^A?@A>Gr*- zPfXwc?f818^S&xv%nuA*+eiNRF`X~zd_u>~en(S)1SF{~U^-vuaS-<_I$t}}?SDu1 zpU!uKD5Afo^CO)fRQdL^qonqNZ#(9lpXlCC=Vy|y>HI?S5}jX3{z2zAlEvuwzDef~ zlKJWUNiqk?L?knkOiVI0$zMn&mpdYvgk(~sm`tV=ZKdHzG6jjI0Fo&kW&ev%l4(RJ z?zAM+4e9BfGlL!#YbJl3+0id_O=cmPoy3j5;*Rp5*$VkWImw*PoXhdA3X{~&Ffin;GCB%2qZT0eEQhCOO?zo#Ev=(^38(MK`oI zRYK>IT;jxeBvl8eX3BDr)Za~X-hI3)h@mttM%@>fYfHE=b_HEL7! zy=!IGlIuurBDtOj<f;b--4(X3bK6d6OF7xS-|CuvCC;7tpUlx3! zJMKunp?eg`w{%VOcXVxx_~ep&Pj@uQ4|EqM`H}84B>zX(jQLL_f9m{O@-xXVUMIgg z{^t0*;~$3d+Z1(W!rh7KPOggW{)O%&ir$^naWaWneLB*ef-cUV(oxPIx>FaSPESks zZ*-@lI~(2U>5kBy!PRR2m+nlC+W#%0(4A#S_!V$nKm8(|v%9uATz*bR-Ty|{ui+hJ zW^TIkNR_pFcV3sDZ>Vj47hZtwg3e#4;5)qt-PP$XN_R!Ni@Dh1beEyKgwuX}sJoQZ zDjR+TNa-%?kIOkO@3?~DP;4a;wovJ=Om`IzUDa_l$=E0}ls5YW*i^0QxE9^Dow<(V zx{?_rx*pwK>8?+ATe=(2-JI@*bnVOEB1`u1uPHJ6Z@B4@xmgjNt~P(^Zs|I=a@^W+ zn?k_p?da}EcYC@z4I&K#&3^eqSC>D~-DQw%6>2xSd(qw9HSa-p&q3!I#M+zg{&e@D zyC2b#Mhq}VQ(>>5R2RR<>sIfdgW1?+%+P9fzPr66YJyJu!#=Gs4c8{ie z0^MWi9#8jJy2r^PS!i*_#%frl9z$2h%XM7 zZ421&Ovkev&vrb=Q1eUoJi1pq=X|;s(7nv*3+Z0uL}C9;gUu9%HU+p`=bsoWO9%DLbb^x9Ws%{&s!yw_BId z>-zq$$%}5fOp9(#w=E^gPls;eM0dzZ>Gm`|DYQ>FD`;8Q?l@=ONcS$fH_>%#-@Tcx z-wq`CTj}2BlZftKaA8dWbni4Q%rD)$>E5G9@$aR3U%~erK0x;?x)0KQhwejkpQZaS z-ACy@;+s=84UMvb(|wHY<37ZmP|sAie3I@zhxAi)?FtBEKBHbV=nv1)eVeZQ|8!r_ z+PM27-B;BKZH^SY| zwfO9Q;rOMYX5Q}Cq=(Y|hSZF++5hj9y3LH;|7y>!`@L)X!SP2&Q~tXX_6qQ`6TfJF zSE9et{jH!~^B<%WIq~O!X?eC3)4z}&OgahatfV^sPdXXtRHTzDOM0Aw6ep%EI6BWP z{?w$?kj_9lZNVpO!gS|4Qc~MHJG- zhQ#8e?*C8a{~v1eRaWZzzp3y4roR8{0;DTUAi0ugX5ilulWs=3iSsv|KxT8&ZAj(+C*9I< zE61%32Vx4^mUO$~k#u_(*r5<0-ATltbi0rqK)Nfbu5l*ajdXX?y`0{IbkFhW8bP|Z z<35i2I__sUfwsY@Aw7`vph1u#%C_q#`Y?^e^l;LPNRJ@ZJA#>a(xXU^w-ZF9M>`%v zdaM)2=~$7CDFvNCdWI8Y98YvSiS%S6TO;X)cEz@Cq+t)}tqk_9_?40#7=J&ZS!w>yX;bWhfYJKcWRqn#9fYe%TVais^~st#;js`zceVh z2S^_zeTMWQ(#J_3CViCj5f#DTuMJ5b6TSJnq)(9QEr#^T!LE1u6zS6{vRNDJOMkb% z`YfrbeU9`+(&tHE7=+q4I8r75kM69nFQL+xNna(kHhM*ev~BKi3r}ht?{%HaDl(vU zf0N#Vq;HX$S$><;|NKP-w+gW~wTyjiHB9;*>HDf`(enS0e(2~^fVHeRpEzn3ApMN= zb5i&G3_`zjzV8Ct8&moX>9@*;gum0*L+O9%%}V+`y-7%aAoVTX^hZ*^j4}PmoAqb! zLcchg^WU#UO0@;-9N+&^z{7~J#GHd z^G)I2R8CJ_#2spwmfmzjdU}sCgW-@f6TO-BC{-i$W*Hxs-Y9zW(wmK*x+}fe9p|7o zrxSB&p(wt$k*!gCbK9eH<`Gepu{WP{=6CeJfUySZEkti=dJEHAl-?rp6WX+HtIFPD zR;#Lzo<0Gfw*8(s}6?*H_Go5SDTaBI@f9ofM%&$prU73;ITJ+YYC*!YvZfFCcH(Gtzj9yPu zfD;?g+mzmh^xXNQn)gq@%oOxA1;{4!Hlw$>#)1vi-WK$>rne=%tzZPV02rS>=n4T>%fxqcBi)&y*=pdIZ|Ag zXC+dR_olaxqS(;0@1Z=Q$VG4zg=QL=_Gv=Pxep5DpyPM~)py)lCf*js$>B+;H9 zdZ*AkjoztJZjGqyolftJ!ABX!RL!47&zJPQv-KL@JIC={$MYP|r+0x97aHoPM!Z0L(e3VN5T3z=r`U7q4q^ewmMEgVJ9>i;Er*U&Q!*V2pWT}LnU;#^Np zQvkiO-m)b}9sZOmwRM?ZonFOds?LcVYZJ)$6flr)(z}UXi(ZdjTS}z7Loe}IUB`5S zxP2Fp3y5Cs=-+?!wEwH<;@?c~HhQD87vE{p7T70jny0r9Uyf-;@(Q{!Z@?7trFLzFq_rG#>4R%Vx>`r1ZC< zKNS=> z*Uqn}vH*RVclry`_w|2Y>wo%-I4(LqY5I#hM~6S@FX_0Hp(|W^AZD{ee_8s=X`1LS zuhA`H1;-T~S8`mL{wi7v_5D8ip(lj?>h%5mXMasOL;7pc-^huz>C6A)^t$v%JF%X( z%leKRIBuxcF)_8*#xApo2Fa;(w7U!<+rB4EB$TgZ%2PyEmqA?+dR_W zUaK85;C*XN{r@lhon%x+>`Z?b(KZF>aX0$=(%;<+xQ8l4RlTR9@BjAqra%7tr>$Kr zbU*t0(?6B|0rZchZ;g1kCwidcLG%xH;t=S2D^$s5o=xsa!?|9^4LY4judr_;ZT{u%TyqJJj+^XSX}PycL} zk;{($xkcOp>7P$u=RaM{w*WjR^e?7AJpb9hbePKJ^sl9V#ZdlAk9C!!jjXGOI-DH?+(3UUeYyJSm*@vW`A`DNo1gy_Q5^===-)=aPQUB18uVicOGDGKMZfKF zJB~>a(dm@_IG5?s?-zXfz6IRRrDRZ2-~a9303{Gi2jrGAJ&4w4x#lQq5r58k2yZ>_=KVUUcpd# z^CemTDbY5w_n#p%yYwuXybAQ6qi=e?rT+r`x9Pt~|KIdqqVER827-p_%d%;8>3`ySKA``h zb3StX*sze%(31iAjQ-d3Kc}xRzr<92zNG(^77zBQB7CFl*-x6kBQqoXU$Tkle^1{G z`w#Sgrmye6=>MOW;wQPVyhNUdUxvB*jsEXL`VSBKvv?GpO-wc^*0%Y@%%`d}c zwP&5vS};$rfJe7sXmL^+-Y*8g`9cGt($QE;4+;IuAC7oExP(PayvSrAQAX}Df zE3)OtMw2a1W|~(ZTbXP{vXx{KeZFvcod+m5WUG;_O}0AOT4Za;FlKB1PuOCq6zh(V%qS`u5$EOp-kU@kzJ$lB8AtH1!UJtQja%~$^TF0_y4%g!8bBlne1k=3R#b= zO4cTe$Qoodk64!mF9MnDKbaf{hb7T;?`1zvL&o!|TfLf3p;=mIg}hA-kXKUKhS^ketf+fO8%sd(?@C z93LioL?*~IxGf@k%m}i_9iJ$I$o@(8E!k6KZ<9Su_9EFcWG|3CTa=gVIWk!o>G7W6 z%3mUTjm$rxQt4hMD_Z=OB3ESk3mC7K;rCzJ8)Sa?C-e3HAoLxw56S)`Vd;67?7d;H zc%STpg7(_@h|E9o%KZDU>=Uw2y$(P7U*4qQ3$iagU3dP7^EH{)|HJ&4{r`pRzrz&2 zC)5AGko`DJ*V^|dPx0poQva2FBC_9xv3@7}!&BG)|B7iXn@=pF=+gNlvc~zO8l?GT zf#&I8c||vlCPy2u$L@jin9*+7Ub)auTMUj zTweqXqS*YEZ$Q4eXJbQhpAK@_fAUQnH+9@h3avPXgG_Eoz7zRY=zN_bOH^(n&mp@ycMIT0fG`YVfjqWK^>kzej520=bxzcOn#E%$&RNuo@%Hlo?(|fgZymrGs*q%k7uK3LGp7% z*n4h%9{E+|=aXMVZkfDLIk6y1*HHcEV)9FzxOB+TCjjJr1Sr3P{K|r_ah?BzTuVe{ zLo(NBm12+fl9gXaem%K+fpT{NXoJhS(y{<08{#rM0 zkjLbAk~hiw-q0=bHhGu4L!PL)P0|ZOo|0=XU;<7?ek*xSeiQjP@*5>T6d=Eu{1(-~ z|2VgK5>_HD{wLtyMg9!=-Q*9G-$VWYx$M9F$n6#2eq~@_e;y>4@5%x1%H|{Ttn}TtZFiy^Y$yk3IHyPtp*#Ae?SwKxrY+V~J_TUT*?(RB+ zyE_96u7kTf4DRmk?$F)oPHU1*r_;D!+}$qv0T<`5vy;5@-u185Yp+wM_BmBaC%Y<@ zbUHgcC_!n;{7|vlsVM3FZzX&G8>MM2l{>V|o}SVIlxCo0FL|Rhf|AyMO1cmzjU1M9 z7D{tbGD)N~o9znY&n}#Ul3V{VPvM_i{&^_PtNzbd^mBgW*cL5lM`LLrO77v$S*=z` zX;DgRQCf`Bs+1O|v;w6iC@rgOOHx`&QA^uyvDS+vpweK%~D6O6aYU?!r*EvFIZAzO_T8Gm5l-8xRp3z+E?r66TY(Qy4Q=9y& zvH3rxjValWe<^A4Kkw@1ly;-E1*IKSwI!vkC~Yfy45h8@l(Z17|2x}u@>ojS$!YI@ z&Il^*DBMZ7vv3zm6XySvc6Uzs_n@?=9VC`{93{Q~%~iQmva}DS6DjHW&(eOB4%JR` z{sU}J+81=7@E}U|UN1^|iH)l=`!Gt!P&!1;|@QaXpyxwdBjB zl+LGg38f3{K4$4chcYe_+AARPTb!j!<+)6Fx$p`*uPy2-O3!MKT}|m4N^WzmrF0*q z>nPo7zcMIYPw563H`>n)%yX0QW=gkY9=iirx{cC3lx|nm9l|@aT1t0O(hDNod$98i z_sVcl_fzsHJwWL(g*>QK4^etp#YcpXW@Ooq3rm@YQd#_pDUx+eud*?trlMca8kE{% zHifOi-=Xw0rGQeOQmBxKQbMUKI~Mjbve0e5>vKx!DZ9!mX$h$G1f?gf18&_Q!^^g( z^o-eA(T>LFC_Qg0Hl-JYFJ`|Sr}UDFFAHCxw*GI&YJN89`Tx>?D1DPVU6mc}-%--~f9Z!IJ|&mm3I0!%ezxP&b;;e=cH>CN zb?jH8Inl@_7^UASPfqC%%9Bv~ld`6urN1csEiw7Wuw48EtgKhSX;83DC{IdxvRrsw zXWSH}JO$-hC_{OA*9zq+?FMDpz5mCddsC1@_x>M;(+b@yfHZ)*ttihxd4xiw|7BbM zr##ZSYPBSk)YqM^T=W^3s&&qPzscbksHHB+gPWN-#^4gTw z$!z)8qr9nh{`!=){$Jj3%0b@)*in zQ{KkjS>%?B%iB`kkMdZ`ds5zx@~)J(r@Ry89VnafyDr(s_Lxh)i`mZUrX|jBx5CT2 zQQn>M9#(Wt@hOj^ybooqm6i9l14ewx`x-$-%KKA3l=1=2L-|0;2RlFIgN$JN=Ma1O zlC!toobq9mkJ1i2obnNr-NXN@j(p2*&E%VA8IGai_PNdfDIX_1Ua0wh`9vyd{$=LOFJ$3Ih4;WYR}7eulX;a ze4z*zQND!o#Y0h)FQt6BsxC99z6;7%WU-X5qWmc3t0~_@`5MZ%P`;M(jg+sWe1oE{ zA8N%Jly(2Ntoy(Eaw*?R`3}mrWi3*^z38gl|D}8v<-3R4Ejag5zK^nQ^_K6a`~c+# zv#5+o`C-M{?|+MaK1Nx?XxV+~CCXJ1+~HcG?B%q)KX(6@vTx3Or!^?+CU3b(xux1R zWxM%ngq#ynPAEr|yM-sF+%t~SYTNrmMal!p-%@^p^1Dj-B;}_lKQCLifXmNNem3J% zey-Sx7brV@dy(=hO8AoaFJ~vxspYpGi|B_+%e<}Yi{Dbna=ReE3|6A7m--_=4I%Z|! zeCsNcP??9yq!w72jLNK3CZ{rj$`n+lp`xDvTh)|QrV?jrhxz_7zm|Y1(^1j$pXQk% zBT$*q4D-w+94VYxIE%xg1GC99JC!-iY5X~<%vIPL-Q2#d%v*To6K8(m0>TA_3sG5E z#v%^w&5)d92$zP|+e!Wk)JIWlSnN zQ`sdW3?Y@>olRvA;ht0;p)!ujZB+K6Vp2(EZz}u9*q6%DRQ98CFcqyW*v>qF%7G^4 zW=sEFf6P9F%Ar(_pmLas`TbwnM>>>olo|HDA46q4m1C)#sD_TCa=Zwp|HVEzNmVBc zPceTcEY`zQshmc|q@K#@RL-Dsre$`Vf<{HR&MW7bM^#kLqjEl#>#1Czwl1V{C6$Y) zTtUU||5CYxifKNTORX*2sLL%@_ORA%+@x|fm20S6N99`M6z!UAwKq_?k;*N~c9T#; zfK}Z(M5c1Ps_vk2kBmF1+$EzJ0<=X`?p4nFg!fZuwk@wydBYW{xRc_2DsNGFm&)5p_0BNbdqcL!(*KI|zw%L5MdcITbs0Y8ohPV# z#?!8EpA*hT4XXH>IWWO#kzCtvC&y#NV54$d5Mz-hp@{@b<%-5pM&$nedjx8;Lg` z-pqJ&;LUZtTr&wxyjDZ*IJ~vZAWy!JF5L?vY*B0VB_kw+P+> zcnjf~_!s_#jh5$G6mN07#fCgeZu+kbOW}>iTN-Z#yk+o~!&`QUiMPDj&+AC`Mh(lq zBHmhfE8$7ry_NA+QCjyqCfBRggsWSuT2a-SSrKn-y!G(b!CN;cIF7rY;;nDRyw4lr zZG*QF-p1L+;%$PrIiBf1-eyMAJ2vsQz}rer8w+eT*c*elwGrH-&hBTGZUXOZi?<8j zSiBwawi|iIr+C}r?U1#VWB z?Tu&RKXR+u|Kzl;?vH2h|H=G#2jLy2Ru0BH#QerNG$Y_0j%Q+ycLd&%MeR{|N6UGP z@L1t-c5Zs6|3-6|@3)iidUz+}J&1P--d%X(@lL}#)oAX4SWAAo@C>|L@y^7%R2y;@ zo*jO&&k>$0JP+@D@h=cw=urNP@Gh3;lFU>1FT=YW?>f9I98JtC@vbUrug1Hku&*^j zp6z;;m6x;{z-eH0E{vW&tG7sKE zDn5)?$9n{?g7>IZ8Rs#fJ7!9SN1b%{k~~jURiTN$4AXzRc&V`i|-xc;DmwjrRlIPx^9y6xu$Q@iX3Ec)#G;I`yD zpYf@VpgJ?v88Z&mnG`#6ShiWHO8hN+HpR|fkmsbj0M)su&P#P}3$fnLQ`F9<;{2Ik zfeTVyg6cw47p1x|RZadCrP{@)E^g#vcPV^Hs!I*aung7hsV+-(RjSKTU5V=QR7X=? zf$FILFLuS;V?DQ3AgZfm9;&NR9Yb|>s_Ri*gKDn);;cp0=KoaJ5!(E}h+3cO##A?u ze?#F$!)iCdz3RwcL zq`Di`ov7N%57nKA_*8c-n7dQmQ?*(JvLxe%(e|c#plWRtpt>*B{fchrj}NK`3?m;T z&cRdM>MLquTboj!d(AlUqkgSs@GCA!KZp1)$6km)!s<;4yrd%y}4+`^q;ED|Eb<4wE2Hl ztKywmk?P%4AE0^<)%)bXx5!}PUvM6z`cUD2m}-gYBd$pGQQ>34$1{SVjv1;Is;^S@ zs3ugaRJ&AbR88lpYW`oXQ*9`=ITTB^El)=@8v>~2`cE|)MvJNTh86o%U!a;&eUj>c zs)@hV<~@0e>hn}J`L}LAgrTSb>EA|Z47qcj;FHwD2v{%%Je-AOKzDD&|s;^W1 zf$AGnzo7ai)eoq?MfF{(Z;SuVF#dbW^S)(PLsUPc`YBbL{8Rn7aDI{zsD5T1tNOgC z`jYDR@_a@0YpPE6|1*?L$-fnTmpk)Texy458~=&w&r0%3Mx&aK0#tvaHj?V^)G`hK zgX*8uCZhV6_enWxmWw~`|EIG4)TW{~9X08H z&Getzv_mQBh+8os8rZ%TSCd~g; zoJTls9+>xM0cvYdTaenaYI-4R3tNAzV~bE*w6GVWwz!-&`KPv|a4F%^4rMHpWu~?q zwbiICPi=+5GpgW>rnaKUD;1uVRa}LdZdkiiZgyH*-D=$}%RKX%)YhW5Gqts;ZAEPz zY8z2A{in8G!C9Z0>A##d1dO~t%e*nQP2}9PsNGD(&8cnS{+OHEmiG7Dj&JrDRc%de z2Ws2MR+Tk0R>ke8Z9j6nju|1f9jV#mKfgk+?LuvDYP*WOoB1tvci|qwJ%!_hdpXQn zrzZWc?MqGiZ&CY;a{#pi3y$=^c5oI&?NEI8^&Lj-erktPJB!*8R%NkA3Xc*Vt?&I9 zYR6JLS@vlC=TN(hnkN6X z^F%mbDDkhE_*1*cLd>{Wc!}^*bK3sDoZ7WYcm=g9ogv$X0BTnYuW>h<3jcM~u9x$M z!gC|Fn=;#;&8Xc%O|oCR)$&`C+o_r6Q@g`x){VPVyxWTAw@UzO_foTgz&>uBs`dc2 zZ>c>suH!P4Ck-N@N7bBnXA-lHpQ*^!n#oZ|L*db z--ZTfh-~^VLqkAKLxB4|Z>>vhKrL2PPnZah{^~7PY6TNz!Z2 zP@1UsC(3u)n63?WJ!rkCJ?cKOMF2sr@1T z55ga*xmfo-{#3;NOzju5ck)E|Rrp&``@2h3*lq|g{TJbHYSMq#6MrK7iSehx|5sk? zPl7)w{$y5kdg2ade{$gz_!58fOlehFHh*gTY3y3hpVpx{vlUc-dVF07_#>PXe@6V7 zWz2*>(rDQp_GiJL8-G^(Iq+x0&u9J_0e?>XxpH#Op9f#le!tLv_YL~<7yJeB_r+fb ze;oe8`0L^?fH^IkW6@N8*NWd}OdFQWzzZU+QSy6gsQR zzoBs~+eY{s;+B_7HiT{vVEim^t&DN8lfsO}mLWY_?aWy=lg;i>qi;oDJ)e>(md_=WQOXXRw|0skCv&c#0u-^5?V3xpR6FA`qt zu&BKh|3UoA@NdGu9RC{U$G-yq%8Y}575>#je1%_&e;xjfVqT9g{U7SKb@FEXyYX+q zzXSi)BF}C3x0{{sD;o%u;jW@5+2MLG{{5~BUqe8?2@e$Hhw!WT593Sf{YUU^2*9`b zf5uVHk}%u+3chDmd2==V4!$o!9lwd+$OA2pE)9H}{}=oKUsCUf3W=N_znh0-H1j0* zeSC@kZgv>s5AdHbnil%-pQ14x{?pVC!+!?&*`nTK{`Os`^CKXQDna_35eqi~4lbC$U-=UZ0e@h5)lCmuCv< zrvKEZ6iy|aS~!hxT8H)-T8XWj{;O()a7HV-lcGM7`d-v$roJQfS*UNV+F6COQJeT0;zJxq;3g@CeH}wT&&qIA)_n*JA=M$R#Q(wTL`Q6_E*B25lEL=pmDD}leTRf-b zeOr?HQt~fNeKhrD>;aX!{en!+<)|+&&kBWSl!d!mqpc`hiTcVSuOhTS`Q0l(vm|R! z-T+f$eL4;>qI6Mt3hOnny_yHeM9RJTh2>bo1kzCnq< zdB)iSW;V^MOaJTph`BHI{iq*EeShl3%1<_o)(@h7DD{IyGyS)Z8w%ZqTjs;5|4ID_ z)gDRxE9ys4f1di$)K8T27}1WUeq0tyUAKViCuFCCI44m*nfh(iPoaJx_3_kCqi&Ob z`&hS6r+zMVP5$d=S{`fqEb3<$wyh3{sri5XeAyRdwX!dweiikLsb8tsOQ>He|7F6< zg;zMt@)X&wrmi)gx<-e(t^ZTMPI&zgllqO+ZT?UFX5lSa9_q#XzkWOQD)l?4SE%1f z{Q+e#{il96^?RrnD?j!7vb5A~EHK+R4^n@Kx=B6thlP(&H~lw)Lu*>&LcJtgP9u9p z$oEW*dXKtKy+gfTIBf`^-V|yGsJET%YN-cVEcKAO#J_IhPu&KEB0QnqFZe0-r>GCa zk^WnfCky7&%BjVly5|3N&HpE)dV%_j)ZeB4k|nf;UZ(yE_1CGJ{>!5wp#ECE&R>5+ z&Nr#QE#obtxpyDcP5%qdd(=On{=NtwnBOwH6ZWIR{y6`2jQKxR?Pt_KFKWM_{-xQv zeM$Xm>OWK0{J;K9!TDBE-wD5`{(}q~0;m^*VErdov{9h0`M*_ZtgQbk+Hb<&g?|)# z>@OM<%kwvN8#K*sOk{@Ju?-uZXiP$58XA+*m|RX<|1X$Rh@c^$F(r+uXqfohX)6Jt zA^p#ejmGpej;ApLjfH89pfMK>6Mq^r(U@JvNE$QKn8h+!>k|LQY*uvVsWIm;+l)D_ z5AG&WWA4H;kNoorrT-1-f5Y^j#)32!%9zT$2#vjIEJ|ZL8jI1`gvR1DR;HoBrLm+! zmZCA*c4lK~8q3IIFMpu1oY3jNvz`7s9OclqS5tQyE7DlWikXC3>#NX^<~Ll2H>R;V z4at6E4eOGaG}fZAHjNEjk;Xd0b!n`pc5P6|veDR3RU2hRL$yLlhv$ZvWywsEMU^uICIXt`&58X5vD+m7PwB-~lJ3yocA>`BAKU!L7**l>`Y z3-XK;?lt73u@8-XX&fg1el+%{aj5JAga--_qH!>dL-M05JI3-O=WrUw(l|o2BZWsf zlyS817%RH{Z-qA|~)ai)y3%#&w3 zhsHqUb7`DM<4PLm7yJuoTu9?$g+LGLaf9&2?E0F<%`|SOaf^+xTh(aXD!k2ZvOABPUATLujXP=F zPvb5c_tCKT|IoO{o~Lcx>(EALhweV6F(05&qVXV&M@7>kKn;5Yh{hv!bnT!g&l``~ zW55ml1lY~M-N(IGtx=&7(eP;aG^#XeBi*Y8+&y1c>sF{5j^D7NrE1dX&}i9}Z=-Dl zm)Yz(Yp6q%?ZkMt9aEI@$ZCkZv1Y&)stojVEY)N#jX{JVoP08Bf!A zM#i%=o~QAgvvZYhykPc(;!C2vOydk^LsJVu&G}_7kcAssm4*N_7NNN;%|&V2onM-Z4bf;WL32svTuQjK z(DZ+ZBhT_QSEacE&6R16qB%Mv&|FaoS2D8uxC7PluVS|Kb2XZ4(p;V98kr|gYn-(T z&N^bQOLKRc>(Shb=K3@@rnv#ljc9IYA;b2J$eYkK{inH^9Ysx@+E&~`&Ml2^{xLLn zq`9>ft#%us^uIY)wk`ph+soDvU>!5@mq+^F+(q`T!riROID61Misqg)52QJc<^eSI z{C{(A`<-KRAK|{j{p_bt*82Vy>umjSfaXCokED69X+`r8`+-mMP~l<1!-YpUv_sUP zi#6uaG>@Zs49#QnAGzqKE;Ns)d4dxtaZa=lBcCKZS$K+Yyzo?q))U*1(`lZOZIq$) z(}n<=XVW}~rs+1#b7`JOQ{rzS7tp+f=7k0SB5^LZqSan%hMOcbFQaMVUwq3~(!80b z^uKvEP0jzC*U-FH;n&f;-g>1zWCqO}Ri&Q*Yot^0R+|6Nyp87jG;gQ*6wNzm)@j~J z^I@8I(Y%kQ`wH%*dC$nB*RX_Ve3}_F@6Ynnd_bul6h4&ST53K*vqJMxn%SZIm}(yv zmK<6hhuM9orYC<@SQGkLEzJhah-T9@O0z{Xq}jIE``wAt5eAmTd9+@w*e=ajMvrDn zGs)VbsjC3TbPuXE2Q;6cY2rV!vuu&@X`0U|@EMxVT2+4DJul}AG+(Fb4y~7In)qh~ zny=9Ox7pg^G+!0j^k02`gXTLl-<0#MBB9*^kmp^a*%$rZ$jv0|%@1gPL-RxP+tKoo z@MD^v(EO67>-iTnKa=xw&!1j?SEhU0{LMLOx>tbO#?t(g=3kcIV*j==#fg>kw;8Z&WEo7Mf%djC}r2BKO)-<$Eq%|$At!Pb0%e0r)^t5J>F~VrBtF0MT zoJsabS~JsHfYvOu=B72PoU_rIgVyXB-_Y{RDYPL#9O-{clmFIys+vEmDhLZYn%Ne+ zFs(&stx9WA6&Itmw328nXe~i&NfqT9MYWHeYHjM{5OI%iAQ%B{a_{TB9?& z@T?^N%EDEKF;}CN?c~*ItwC!;T5GBgYYEr3aO>eZwARf!Olv(_>lgM0MzEc>QNi4p z)+U9mA)vJxt<5vOm=b>%<>p$gF|-b(wY8eqMz}4l-DQlWwVjOZ9m?2&){cd}6Rn+X z64Kg5xN9~8p(Xv-Y=qVxwDwfsIN@Hxy@mTYl(DaHKcVSAtpgmopP$n@h}NOB4z{BC z4>2P<#af5aI$X{pgh$dkR>o1nqiG%EjC|_YI!?~xg(sNbecTb=I*Hchv`(gVHmy@s zJ3gzWbt)~*|68ZaZ~9N`OreQ?CJQQ_BRrSZc{0uyULY*=zjYBU6MtHl2rt#QaM{o| zBIgyfuB7Gm=T)?xr*$>0Car5|-AC(M5w4?kH?8Yw-9qaI=aEzT-?~Zm&E~Wt;Z|CA z%5xj7+lxJRM^-EUT?O+V74NlT9(zA6m*D|gkE-fHS`W#1Sop|LpJ_?_TkcS|m46FY z2GJ@)k5*MiO{n$%maYHLY7EQMqV*K5Hm!tK$1z0?gdwd+MmOWridF16RGz*WwqsLT z16ohgdLr`-q9sXhy-e#BdH!uo%m1qIHCnG19-IFc zNpuO&dYjfeMeVz^-c!i?h3A7|{EujTOiMD}`b0Dh6Rpo=e@^R*BI-+8rvJ3QHcx)= ze?xnETHn$#ou?)JZ+$QOhl2Bev?rnU6Rp2#{cN$u{Dqb~<$tI3Ye6&pH`~6HKWP1# z6>0rd5dN{i_C)44V`AF>$~Y=cTKFfUJ-Iwn(4Ja`hJdyW0koz6Su5>ntgZI6!s+r> z+B49ejrIuIBgLPQ_Ds&OPqxYJnQ6~L+r)p!DW(kpwC50-{wwX=bWWl@5A8c>&#S8W zXfG~fe&GVb1%(UIURcH=Leqa4i<#jjY3(IwpH6#8+Q-vgiuN+9UD|5%zAa08IodnW zUY_0P|-c_{Sgc?5Ddt@QBY5J3A16|bay6YZ;LU#sHPYT}xFU~OMV`v%(AyDDqQ zjlAs}&CV|TE%VK^Z=rpgVsEvo{4lfk|HyeK?YC&(MLVK>H|;9zduTsE`(E1j)4tC_ z+(*;SVp|@h{g7fGwkr2`UF}Ck9(+CRM}?2keq2UrDATSuo3@vEWY=gnl*Ff9 zw><7+BGAli+AZ2`5juq@pdIF$W?R~&-KTBhFIrES6rD_IzfOA~=M%Ig>FpwLJa}!_i4N5{~xFQVV0BjN3=gSJDYX4Kc$@s!e`3)Ic?K_ z+Fus@uV{ar+4hE?_BX2iR`?wqO~u>a)Bb_>?{fY~TN`UhexhC6|84(5JHP)+`&Zh( z<}~UO=5=Vv&6fCg7RZ-OJJSEoLJF}VpztqB$HbqG{{OwR zgw2yXOA43D&kpk}LuXYw%hDM|$KL-#XL)h-@&}hKyL{`6rn92yNk{AdmUd+&U&UI? zPR!0~BCMW&9mZLc&RTTVrL*?P_+>ilI2`FNjm=(<&L(u$r?VlQ4Mx`PwyN6QbT*>1 z@ler`>1;}8a~Yczv0F?aSSvOz=zH9n&W`HUHgvW%r`3)XZb!$&pUw`MKfmto>_lg0 zItS9(h0eZor2n1W#FYMb_K>|NoxSOdv&-|&URkW675B-DmV7^v_ZJ?J`RN=)=O{W7 z|IQ(K3}@0gi_XP#&Q{eqh5uYS=gD(EoeSw)koonsO8@gO+QeV9ONE!w zxxDab20GA}(|L?sGGtad;XtJaS32{ zrHJ+DR13RC$1iLf0_Ze^HU!XV(P?MhQ?`K4OLRh2MRcB$(WPVhPp3!c2|9`FesRvG zDh?bv51l8?$nB@;JV)mlI?v`Ouk+ja`@BM4pkv~npL%wln*OWm6*~W>^J=EjxmI^x zCvbb?4T8z&yh-ObG2f!&^k4Jv&O3D8rSm17_vn01$L9ZZoD6;@<3l?3@TcsLg`WsN zbvSGfd|^d-=zK-zKXj!36OO}g=$QW7$NKy|ouBCZka_6*=nOhVLbHFS^Gi|tU)BC< zMK{0g*u$T63jOa$|2u!tk@$CP{%`zXB7%u!Xf6><7jbH(S z*$L($n1jF``zM&wLd=-k8qIccp!NS?J_1|(H$u)?kYG`Qg$NeT{T8@LQM(wy;+gGg z36?0bEk!VzU}=J7T`j>f1%Ek$bf zSd(B=g0%=XAXuAVU4nJ85QhZo5#)X8v`9TC%5*$o$GQlAPM-UvEB_Yrd5FB2_9!YQB10cPv@pWtqSdkF4Vo_h)I%Q{eGdq83?AN;*DUQCkbreC_4EJ!Q1jbOYoeG=LudV zctQ4y1Sb0gFXaP)*{{g+Z-=?~2d@#lZbhqogWydWZ)Ki*sXTZ`&UXpkBlwlzeS&WZ zJ|Os9{tpR0%J>8y6X;?g_*C2SS>AcuF4KR4FAL^Z1Ye8uAK^E{nBNinLhwDo4@S=S z^N$2(6Z|Cnd5EvH|1D_05oTikJHa0We-r#!v{LEYjw1hLsKb>%T;S7W$lzGM>ru-UH!kGzYQSGclwS=>i zo$uaB%YXXF2d^w=T_i6g!>ZCOSmxMe1r=S&hPy8aid55{ zQNqm$7b9GqaB;$w36~&To^VORWeArdTsq?yQOgo8mwU3EAFe>SBH<{)(f{jT$%=Vf zt7JCes?H!>t?;iwxDnx+gzFKmMQE~5xc0D3UN^G|Z3rOTfN;a1TBX{!$h-;Rri7bi znTx0`#MzQ?C&H}=#}bYq+(xOk&Y9MqZ43T(ggX#Q{PV5b@qe4MQGjq4!d-`j?@qXn z{Cg0Z{>vUmxEJBxIW0R+^PKw;9!I!8;elf2qX6MSgh$AuOMuWW0SIjfAe8=xh5m;} z%6U}L?V|~gaUMC3HN(B3H#}a&69`S%2~Q-nA%O5?Bbadt;dsJR^Xaj3I-LnmCp@3< z3_^FLomnu?B9#6geq!M{m+(BZvn%@W0>Vp`^FrZ8gclQDVwa-sHM8#Swwr&3ml0k~ zcsb!!gjWz=nZ@RF)a-g8yhh=+9AqEs&-FyJ65c@AQq_%wHxYV-HxpI}Zy~(ZZhhM3 z+(!5i;q8R?5Z*y}mz;NI`bK!SC3H{Dxa-#NUcv_m?<2fFS3lRfTlEU<{XYf&VZuk1 z;gS5VO86L|$v)xZmdehlTzl;un9gIzXVnbj)Kv5dU2`V>;y2C69*hawgfEDxAs`II z4+$d~UBV{`W7$2S7JsaXzKSW~K;bqVI8TOzPpS54!e`8B{AUTDD{7z5nbyM>312e5 z*)J2mLij78+o%uZd6n=r!uJVH{|Vn9e4Fr1d*Ud3D_apVwBkF2?^+(S-^;6R9HXcY z34b7Thoa;?{8&!S|HDtk|BTRvi9E_0`jYS~!fy$`)*f?@a{XIT-x$r=w%flGeqU7C zY{u7~1`w4$G=e>Us+T`Ef^k~lCh^8d`olsN#@DDlvB+Os_lXZhoLqIeU(ZocP z5!o}1M3V^Z{r{FQ>q#^@(G->>vOyuMBASY5CZeg$V^z}-O)FzMq7g*XTd$%SvM$M< z(U@5eqmf0_%tW&c9h^k7(ft?E>_le~%|Wy|(VRrf5zR%kB+=YN^AXLXR_3(~na)J> z6D=a=0>TA}B>vW`g)w*pKLNqWy^uB07M`Mu8zdk%_3?+C5Qpdpq9ciN@z4B3#}Jt~6CF!btp7yE6P;iLZ!}bBS)0eIC*IM3>9HfapS^%Vb|fbg`l?5!(G<=QqrE z?-fMX5?x7jRpGhX2-g2=a;DkW$)ihv$es>T@g^c^dvr6=E%Mwdyv?DE+l6-s?=+|N z|8AoDi0+Z|UUTOD`-vVVdVuI5q6dfkMO%+#9->E`LG+mLaiPY7s1V-BBYKOdO7s*_ zjVK}VMXM79G8#mt|3oeICtv>|GW{=_3q^>Cx`ii}r#Fn#mq+veXh3B8Pn19Wugp&q zy-4(o{LfmT5uPJ@Ud9VqW-(tP`nQ}f3tw?)t4YzTW?0l~LJa}Y8$@poi+!8O$>}>p z-x9q`^fl3YM4yWPzVHL057kPs{u6ynWb=PlEB|LiUlE!96KQ~mH2*IMMzgB_2=hw- zqVI@)BKp3l{ekF55%PVQ-mBS*>G?`6zI=XYJc6z!q$QVI) zRv9x2XQDgOMbVvEX!C#PFY?SL&g^vO_+S5Abmyi!&k$3w^NBn^-DT)5KzDJv3(_^s zr@K%dZuTN{7nO6u!=EZHL3c?ROF5Kb`d{>9S-Q&={^bkjD7stH9Zh#lx)T5HN(ElwkK)~CBc-g(B(M|TX}9q4W?@-}qG%GfsJ$li|b_EyZJB>vr<=6-W#p2O%?=^jq^ zI=V;DJ%{d*bdRTdl$b};J(lh<8Cjm=%+9l&K=*VxPo#Si-BV?sOxMJp?)ag0 z$}R!uY6$4wOZPrCWXnNW2wl^Ex)0HPICIi{L>{gGcZ>C(uIYb4uvoeky52BnjqV3@ zeY&sEtAyVxrYp7YzDn1`zaYG!hTf$6o{YDI zZ_|CJAiO(_{C;NB{gCdDbUzaLW4fQy{Y3VsbU(}a*@oLzd_nh1y5EZMmGEo2w*Djg zn;|~k@92In=MTBl!rkXDxUK<}vc`bpLQwbpOl!i6E9D^2=S7{(*Jld;w6X|&j^Nj6NUcAOA{|+d2Cyjb+yFH6`U1_ zS0^5&s?o%&60cZP*$_ayGVv;zM}ezZo;<&aKk=GHaV_Gt#aSow$X-vJ^@%r?u>tXh zmcaryA~x}tZTg>IyvM~55W9ZvOuQxW4#ZoDHb%HLv1vZ>HWrnCUt@{4(>E^t&mQTF zrT_6x!)Ut@pG3SX@d?Dc5g$psJMsR+dl2tUyeILvq8s-7fBsNPybtkyYO#0($W>Vf z4j?{+_(0-=i4U??vWJxN+CzyCCq8T_k3x06`-;G{?~F^ zLnr3T6lR}Hd`jUTPkbuz>EcNL-PLY<2Jx9jaO*blS!TFZi+qQiLwqi=&C-d_BR27u zeF5=>#JU!UFCxB}Sh62ql3y3cm*shKzJ`GKO5&@CuO8~B+ce^9iSHr4PHC?vmh#6p zsCc9BCSvJ-_Q*ketDLtH-${JCvsJvqjQpFui`c~9KJMw7_+DaPoco0L6F)%wDDi{D z4--FRw0!@Y{%1wv$3%XdIKTNzENO}>MJt{NRbpHGu_#lIx*2**nz%{)6LE|9S>iVF z)5IO(ClnPBhr|i72?(+2zYNX)sg4@Shs_t<*1mCi7^2K1VFs zkMs2(;und3AbyGXd)y-y@fXCe5Whq0zWUdRUoEn|W`=udK>P;rTf}c#F+X$P&hxw9 zpT_SJe?jp635Ot^fCI{h!`!!r6rr=Ku8OqPHBqx#=xRZytIJ z(VLgv{PZOLt~s~b*;_!F7tC55d5-2ky@ly5l6%}4(OZn3Cj7m{MP9he|oLf6oaT_C8D`QpMj^1wcO#kWaU{z-9NN*>17RcUNxC^~qGf&~)o!%a*+S8$o zarE}ePnO=^^!Bl_thaCGk-a~?GwB^b?>O-f6xt9#?_hfQ{GZ;T^bT`Q`41N!LGMU< z$Iv@!631lG#Z%A(?|@O_DiDRw9{;WD%0N zNfsuVN91`;x0Cru79^RUWPxlZV+qZ_P+oM?o9r7*7FE<@!o^9JBUyrEX_6&L^bb?n z|GT+4VX_R#vNoE#^J|Y)?YZJ)d6H3XSCgz@Y2CP)j3!yp2<~Wi|M}&fK}}XxX6b*j zs&&J*Xf+bke-fMj=O=qo=zp>{iHSeSx+ELQSWmb<$p*%^5IaywHX^bA|IIuko65Nv z$;l*}YiDjjvV)vkl1TrPF(liNY;7U#lkWug^^MIuB-@Fc4Mk`hVT9^OtW*~8nis|BYf zjxW@^Ba%iwFj=hWKS`U!>Hjk%0m&02AxSKMBDo6~*V6Znbgf5vf0 z@}%%7;nSI)K!5ryRkk1KkDxyz{h1~>^PDr&pN0Nx^k>bON@(-{BIlg+ z7o$HH{e|eyO@Ds+`u%Tz-i$+kzC5S(Z2^TZXjM*=`wOeMh!w4SHU!ACIQ?a0EJ1%s ztF_pr=r5hwA}>pS1^UYswac54hmWE^dZ;M!O7vHzzc&3<=&zbp(O=E@*6!-gLw^mS z-T$SpA;64v=&xJw*UR`LuiB9Q2K4Ww?+hnd8_^#_f8!$CCd#=f{mtlaIr53^=xi{e=6|KOlEn=7Z=TOaEZ{N78ry z|L9^5rEjuNUzY&pIbs<9C~=M!9%G9P?n2f5?xug7Jjc^NiT(+)PaKLej`~mEh5-8G zt(YGPr_n#Xs6B)Jne;EGe-`~q=$}phT>9r^Ol|mi!t>2z`{4rNh4e2{+KY$M%6}>S z%Z#bE=wCtq8u_mj>J~u%>Z0~q`X>IWx}N^+^fmwQoA}FllkjHYE%a}-30VI&8w*?$ zX5V3kBfB|I|1SD(Ih+37^zWhn4E=lQcj(_oze@jp`X%}g(0`b|^uPa*1?CMsLjN)P zHvi8PS{~DXHJzP4m5fi{Gb4L@PrpXrr{8oQ`gM^TMU=$9-_D961j3O16EdX#ebayX z8WH+E`kMduP5CB{4k&YmpnshqSX|h^Uy9BUS(p>*ZZT>IMjLsmPsbJ>wf6`e<7a*OLbZ*kw zNarAx{%3nKos)E~EJKlJ9@6{MN~wzaZ%%qze^f8v@k&qNGcZE=Ia|#w_^K z|2%eS(w#|{A>D{{S<=->mm^(?ba~QIq$^meJlkl}74tl~XJyh=Nmt1T4oOWmi&oYk zU7vJK(sfAJB3=7``>-zQdO2A=QTPU=8xG5`G3nN%n~-i!x~ciCiOq`qTaa!=x@G2f zPEuR{DQdSN-GOvl((Opc{%_OUXEf3sNq5St@-5nh^a#>jN%te&jdU;4-AVT(wda3| z%;SdHdy`7}^S2I(oJr;&~)J#}~#sq|kBk)El*vq;a*Ir;H$E>BKE zdLB=>FX(*If0JH7dY9vnUPvnaPcJ4lxhB1Y^itAX{7EmD^9s`INUtQlnpE@u`)-o| z8q#Y=I(z(oCn#Hby{c>ouphFe8S`d2ZT*MzR?<7%n{!BSvxT+vc6*DCTc&mcL3-!N zGcOhAZqj>Y+~ZK&W%Ga1`$=o056FIy)U=)SA<~Cs=t3ZUlvI;{C#spQrX|&8XHbRI zb453UC9Rr~&3jXy)RbS$25Fbnh65E_q;1krc1LJKfUR<;CjLcKOq!DRL@@oAQTzlf z9gs@T({=`0i-{Z=HjnBzdDX+ zzmfi)*;$LEf6D)t@Nd$8vRVccnP)Ju@Lvoj$@zmxjo|t=n4E!$IfE&LFql%tRKlr+ zrvD5~{25G_Wyp}h3=Bpvn4Q6l3~Z9mU?$;61~c2dWia9SPx)udjy>6PFqo6UJhJCv zF!%pvo|nOVLmmbTFj$Sjf((`xe<9(*!bOCO3KwIrc+s~dFqXj~ z47OviFN5tF?7?6M20Js@vB;2*0t|Lxup0xraL6~)`j9UHG1!yA-fC-{aIYa6gJKD2 zu%D{-XK;{=0~j1QjCQcuO3vU=1}88$jKMJs4rg$b_(uqjEI3DJhMXD#tUp=;8XRA2 z>4~a6iNSaoCkyQnAQ`7JINjL{P8+sGXB4$(F?fi<*$i%Ga1Mhj7@W)CQU>QK_I%+5 z!V85L2`?62k|)d?x{Sf)&R=A{lEHNhu3~VF^Dwx&@LxNOb3KC_8A$x|ePWaUf_V#r z`xxBH;4TKYF}Q=l?G~Fe?;K{|?Q913FtAY|3wOxi{*1#wL%`s{td_yU;y=PbQa^Z9 zMH>Ye3>`l%ye3bDfybblr_EdU88lRzj{>qa1X#N^|7Rfa9|Q~rDr!U+M6$aKH2EKx z{>x)S0E0e*bXfnNVDK@6CmFn;+NXq13!f3{5@7HggXf2$3%d#=} zg28X{e97P|1{vpT2LCaFF~4E(ZDD^W&-cO~g#VAKtALuLSi11Ai`xeQg1fux!`(GF z!2&@71VSLVOK^wa?hxSNPFBWuXJeTa3!uap_O5GMSN+T57%ha~CzMach8n1l&`qc$^Ya{jfcQJbEz zwSS>DP5<@z+O()mSJGUK)a3kYkl2jEnGE{^Ogjr|vywx4Hq>VCe=V>!hd6Tz=b}LQ z6~Wp7YV)AB7;5v9$y9?-o3Enh7iR&~23MQ~QCkQ#&IQbrMOs9-Xjul-7DsJO)RsVP zMbzm0r9u9`wlr#T{rWv`|BsrSe{EyY^8YpZ|4R90s2zpc=BN!tZ41_yrJ5w`*y9jqhZ8s6SQ;ezh5blZEULy8JZC?@l z2!|L-e!q&?U%>-}2MP}o(*IMYFMp_*hoN?)2u%UCBg$BDhV>`A+R>=V=hTLyb_{B_ zqjoH6qft9fV#iw&)JBw=Q9D7w6NM+CHnQTMEDrrYYNJp))zUJG6+aENOHeyq^cdk8 zjAhiB!n1^DqjnBz7l=Mrcphr!4~)3TXyS;AP`glA(ifLes9lQMm6F#KP`h08Sk$gy zLi^bcRqZO&Zb9v8MO{b>x7&FP~$ETYFhu-ZW4X7VO5b^#kmc&ab()hj-qOJ zlr(C0qDKFZ+TFr?P75)2swWi=|wU131|jiL9LG3tEkn) ze@()#qxOb~H-&E*ig+8fcUT6t>;y9Z$*zG~ff}8^^f;)ws3oX*s0FC`Je4b-Uuq$0 zQJEICmW12mO?RTdwL^HCKvAN7qm z^#7=RhT7*8CjA9!Usm*2;^-AHTW!|9Ma=}hGbO0e`78DZ;g1Zm`Q-m=KQl-%&H||Y zPxvcpzo9-AYQI}hoIixz1wxJc|ENt8{%uILb!`OI|5a)eXIj+XM14Bck4AlZ)YnFR z2Gr+4UH-p5BkHqDj8g#WGYe-yeOC7Q`fS{xwPTL*GFW{M)aR7IT*A2xMGTOz!qn$Q zeO1&4p}qv_^Px`9Fa81&tNedm?Nwh$%!N^3M8u*4zo_HY7ejsVlCC&QqP`UB%Smi$ z;WDT%YXpDy{e}ASsMFP>z5?niidczJf3OcIxXM6}D-+SH30Fsbjf%4->h%BoS&P)y zL47yW*F}9h)Yn6OGs&+n)QnKyQ1nKqZ;U$KKI)qo4jjxG4fRb+bBW#@^(|1}lCiYU zRwO91HR{`l*p{5WdAAp52XZL0qi`qG>Hkre^RMq(#`5{MzPtE)pneeQdy3vmxHszi zir5GBAx7}W-1if6f8hbB)AN^qI?sL7`oX9lGEn{{D6<=iy8M6rFv-*Ti#S548KFK5 z^`riI2ColC{Q}gFLH$_EPGZNQeh%u#qkb0ZBPtCipnf9iT*;$;l8{pX>L;Tv=U*Q+ zV1Hg;KUFx|P_d^OR`eKg&Olv@|9)O)m--cTu5v$5cs}`knF~>W4E2jpzgJNgqkakM z^7-{kDR!6*H#z_MSk!Nk%oV6>YN%g@`gN#ZEhhax>en*K#LY!tFO>7I%lX&k{OdPQ zmXW}%sNaVAINI61m0iDGmcK)Ir|>S}-NJhe2OeHg^nKLBOz#&yAbb$@hbsQVs6SHC zkCL#Rnfl|XKZCjrTA`b_-?ikNRyGH;>r6Y6iH{uS!<|ENzu-9x>GdK2}!I1MIO>nP|5-KtbR z>ILcn>S6!e*YybX1oakEQDGbPxS~5G%E_XxM}T^Yy4L^fU77+ox_hWkEUy$w!@H=z zhdLMhsK1Z;2mQh@_z~)#O6FtKKPhwJj#>RP)V~n_bNWUWqwoLaJ-$Zcb=1E>!<^x_ zXv`yl?@*`zNBsxX|3>{s)PG04tOEVNqJ9?sg8KisC0PHpYN_8S&~LRrQ2$e6f00Rr zlgd~$rb0t5y)iZUjensrO<$%ltvJ)6F+DXmW+=6Zo)L|?(U=JhF8I-ySvU(5mbVca zvx%cQqA>>=bJFuP=9)a}6+19+CVd6>Ep1D)F$j&-(3lU6r4>6r8VjJYI2wb|kcVt6 zhz6ZM@7oyK5~#5V8jGT_Sf67|`-Wa)2_;`rxD+KzYd4l5&C)K5#&T$^h{o~?u0Vd- z0U9fzv5J^0SE*K=B6f8&4nt!NG|U=nqOk=UYoYOPG}cCALp0W*B=xV0Mt}1M4f+2D z{Xe@(Vnlc*n4E&M5B^ukJv6W)CF8OG13Q+8J;%{FDtJodU*a?k2 z(V+jAz%FR?{XZJk3cD*U7yo5KH1qF2ON`<7=tW0&df=8fnIT}ZzaSj^8&^QH+qtG}WjiVJiTs`WTvUj0zteAWR5TE`Z zjT1zlC_G6x(oj(+SCXU9I1Pk=X9zf#?G;TrTN;IxV<0=VUUFL#@rhvw^ zXk0f%zViQ#8uu(6~p$-6da9_X_V5-ft*@ z2hn&2jfc>99F2!5Or4LQ@uSrvayQU5`M{$KP9 zXuMd_FZGi!uUF7`m9tFaHQp;QVbX7)(Lv))G}>sG|8Jo2Hlry24jL0g)G7|AfNFR) z73HAeq7jPr(D2a+`j_QQvb;gph|rM#H#_tlf~ElW(gcmqxol{3(MZww7>!K991X4W z8-;p1w}8-?h{n6h=sn^4hEt4!57E%#fAZYa_ymnld1J8g**}tY(YK+wpz$RdU!n26 zG;305e1pcfXnfZf{zuOb%I-%=(lR1`M)OiMenHb*)Bn(10gYcJM(2;l?`Y1A#vf?T zj>ey8&Va^WXikmBBqpc8-^Aur3@Rfu|0T{eXzKERb2{eIoW6_|&B;PCGom?@h?&Ko zMOYpFHtGM%RA|m2u{qJ4i%jv+96)nnG&RjN=S6b?$qYhsJ`wYmX{B?pI17sYXa66~ zMbKOV%|#Wv7@CVuPGTG}mqe5PA5BguB9=jOS?Q_v|C`G*igjF30$l&2xiXroiMa}z zt5QI-!@xI##asi;gV9_Q&5hAq3(a-WTwAI7{(s=@)fHS1O*#MO2DVT~b3?8|No>@= zPS1=sLG#~e9)RYiXzqmOW@v7YCjCE}TcEkEh%M3F$|g!Qw-#>GpEPaie5!}$cKy$5 zFo_0ubI1O-^_n}QxsNpLf@bCao4bj#JDPi-xfhyy_CH8ce&M9KcmKm6%^_&+hvvQm zcIDox|K^Eka{WK>-gqMOIuOl+NcX$VA!uGK{!ldO{Lws2csQD;pm~JoBhfrc#4tmy z2bxEtd7_Bn!efNT3hfi1CSaccHMCEF8lGUNXOvI@%oQ(zRD=c9Qln&+W88qL!s zd|H{8l8h0aAv{xfmhf!hIl^-dnWSIB3#5epAI*zOrszvZ_v?Ncn)jf2x%gwzyi!DU z3f#O3&0EpD8qHhKyavr1(7cvusqi{9uP3eNI9^w4-iYQ+RjeKXbeCRHw{cH{sm7@j z-Y(`HXwv_Se;1l}mqn7my=c-;qIn;h_oMj=nh%KoAe!0}Xg-AI!<1*|e?<7G@G+%& z98GTiqxqyEv*=4cjpq1@eg@5FCG#AbFNom&KbqVEViM;5qVOd&U+yz0@M@_L&DYR; zT}ib6)8zh-f^VVuHU}Mr-$8RiMb{`$F4dY1X_o(QI(?Vk^w6=^_u*fOW&nS8G()&E z(fu|fG+S_nquGXIo*{-a2bvu;KS47=Gc~nnb_Z+{p>T#~K5+V;_H2%3f#&;Y_BfB& znzK0(&3Dm!k2hwGV~<(~e~9J>XnxE;JZc*K5ld*j$o#2ziA>wgW7=QPEQwzg{LMZ^ zh34=4AQfZ(K=aR%CbCkK(EJ+?;7kQ)de+^UTBzMZXByGd3a2xqO`I7>*w606J2NV3 zCOEUhnYrY{nMGo=3TI=%N_nQ86VAeL=7O^zoVg`10A~R>^Ke_$nHSD{A_j41)&84_ z%=t;PV1sFDQ+36ja2BFkyOVEKa2A2H7@S2Zf7#LEEDmQ0O4{37_CIuEc7n4MoW0;I z4QD$z%fQ(N&a!Z}hO^wjA?Lwa9?m*&R)DiI9DV7Rp6`+XH}J!-+!+7 zYm_vcH5IiMoV889id`4Z#^SFBXMGVHNZW?Oji!*?1diqMZzfcZ65b5X=A{grEyURp z&Q_CCSvAGnmUXmLvJ9N<2aY-x&JJ*Pw2H&AithnuXE?jcfVDqa~zzL;T#X=L^vbhoWP=* zHmke+cZ_oqoROqQzE8Aw!JJdzoC;?Y3v55O>}WXW!#NGknd(cY!x;nT3=UZ980uqi z&Vq9eoU<7;KD*qxq)D7ta{3;?xe(6faEyNmuf97M51jTicUPQC;atY@TiJ}maWNLo zl``fP>RIJd&NO~g1A z;CA61bSX@Ar|>SrigS-R_rkePdhQoKAbik}lGOh&oX6li!XWiLN`e)99L_W1JRy8i z_>}NzIOEG)Bx!#ES*Cps&VQ!hzW~P^?2B+bI4{9@70%0WUZH?BnVJ&LYj9k3mDl0C z0q1RQ$vSVsd5cRL`)5f8-w{qAhryb#4yQ5D`dD-mj#JXai}=}pI6j;RP5?*$A7{q5 zAG>-BPMZZ7ym4p6_15qDm=^TQnkcRv2vpXJLY zv)}@72eWvVyS>cI+%3Bm;4TbzS-6Y9U6eh_THIZXGB&-siwlCT^;TQaMysl9^5tI@}J+S zlLcEF?mBSSrF{8ROP%`jchwi}hHy7lMjMqCgu4mcEu{S4a5sg!S>H38|8X~`txUO@ z!u+|r72Hv9w}v|$?ly3Dhr6wr5$<+ycY-VD@9qG1N1Fwh#2#;LI&gP}yQ_#@XmfIQ zqk#Qru{|scxO>7q67F7b_lLVT+8cg(=G`%B=AiZ~1IIdIQrP*H|(&!t)t=fk~# ztzh$udm)*_61bM##Ud^dUdkar{$;|;g=2+R2(L6$OI;23L%3Gor{G=-_hz`)!Mzdg z^>AO!&C)3E`85tUe{5hWi%W@o-;+ z`wZM?2ZkJC1%vzCz*S4Z{g3c@LlG~K7-@a`CAe?GeVO|_?kjM$_-F2~sm!m#eS>dm z*j+XI8DYNV=s|GbhWj4eci={FCk))#gIj~^!>z-0;5OhkIeu+1BZTY1^+@Xp!U(uQ z8H5{FL<_DpR@+LYg2lp4Sx&WASC|SjVJ<9$J>f**yM}66a}FPHd|9zAcaF-B;LQ#9 zW4PbI{RHlpa6g6ng$(|g1U{#{Rn~kLJI_~ezb0))w!v%v6YYKr_XoJ&!Tp}CX?#;| zlY;vr-2Zayuql6nHv`lspVad=CJSdzvxra5PCX?UB$TL#|B(!4CZkGU!DV5YJW>J5c=3A{t$oeA$Sc!#rU7y0mxFnM@Ka#VW5;EjZL6uc1% z9u04}Ds>EnDR3;j<0|@ijw#yt1Vx=FJgH<7DStA&Q$&mso?7uo!#ho!)5)QdG4ReP zY4Oj3cY(@(HoSA-oy+Q2uV!WChrRR3u?LppSAlmSr!(&&co%cRvLCH|DZH`pE`xVD zEg)-fR`srccV*u`#$+L{hIcnS({Ka4YvEl-VSBLh?E4QfS0EfpH^LhS?(K67)P@!~3RhUiQFm;e7|+tnod(-{AcK z?P?S%=sId^JkRk-&Iu8_6MhF?@xGtkwbbCyuXcx zKb3Imk}rB1_%p$u7XEasqvhgH&$|0F(11RKGtz*T3pwWeRTzI3__MON`?Ikk7E5{# z_=Dij34Z|oT<~p0J!s&n7LzmgdEn1WyIHBs#f^L){(SHU!=E4i0{ojf4m1r(e?jQzZBh<{r-9x{xa~lfWIvKjo~i`e|7lF z!(R>l3Y>-g72&VMysXNs?8@*>&#Ii|tpnJy#0YCC)^`o~8?od0Yr%(7<6*LazH-Nt(yO41V%~sdwvC-cI{-(;yRwM7Lz?;F}oPEajDEju<68_Hc zw}QVd{H@_{)7NAEoCVkp{!SbY{`Sgf2jPy!VRD-jZAAFHz~?TI+G00uNNURk{vPlT zhrg#q!QV@`H^ms-2mTNd`&JzNwYtAQ`~xb^ff6_fK0g5m{}8Jz{GqHegNMTB{y&Au zKLY-dEYb-}sz}4&9|iwHP740f@Q1@63I7=QBjDTcu`(YA|9HwEK_BV0ZY}A(#*T_3%G~e*^r7;ok`V7Wg;8znN`hTN&1G<*DG`I*{B6-^?`*z7e;} z$ak<7rG04gyTrU3{ym(k{Cj1|`$`+azhALh|N9S$*8NXf`w{p(_>aQZBZmJN{Kw%x zMJMlT|HtS44=qr-Syp5`{Ab|54*yyBTp_@JjwK=SJp9+-zX1PL_%AA>m#V0j;lEPS zM9EiCZ@>@XzX`tq|1J0v;B)^U{yUS!;Mb(TPP6p$YQp!#bl|&FNXm3f9#oPM{I1dP zTkzXTVmpCW+Kw3|5(c1qB=$R2{ z3a}QpvRVb0>KFgPOSJRi8-(A$_3>Wm3m&In4FGg?)mnAln>e(E@ zWe8qHa5;jP5sXFf5`rrb+=Spt1lOoTUM0MmV}bosZ9&4Ofa^76ZV=vB3W&ZL!NUk{ zK_IUl+={?@=^Y5hNdxbHvS3tlXGy5EcO!TR!9AkyRqTDGB!c@9JW$c}|D>e^!6OKs zL+~hqrUk-7!T1PXoHBO6d@S4d6^=Vw zwFa*tXdrkU!5i$B>bI~B?cl9}adiZ5BbXrK9XeD|W(1RZNKPmQS1i#4U95v$nO5uL@_#MF? zD(#n1pa@1b-vs;(x%}#nASb!ha#0*6fCG8VZ{d<6Ei1=@FiYa0Y~{A_T(u z5YC8jZiF)-oD<>929Kr<dGqTw-`+~{s@y&WmxH3Z7#ENP^a#lmQ9m3TSZj5jZgc~4S z6XE&@*Fv~96WWR^T!(X6xGvj$ml;*>FRI8?lg95wk6eu?fOWIdz8ruByKo z!p*6T%q=9dCBm&`kge=+N5nSe=?}tf`P4&OZI5sm!W|IqjBrPUJF(aCu{~yXG}@Pe3;em{zwu4C6`AB$(fAqWakPVR%vQAR2^`M0?_`sB zcoM>|5spN73&N8TjzM?|!qEsvAv|?p_!1g-+I0y}LwGvRpe<9=#&$dd;f)B-M0f+j zvk+c{@N9MXa}ZvL@LcA?{;vnU@O(>!kPo@!3lUz7@JfW2ARLSEQVCxsynM2Zf>)G5 zgjXqeHG|ZAjqqCGb;9cnsodri_KKSj-psCR9nZ!BliZ5%0fe_9yaVAlgk1dd+{#u; zl)n?`usbp8UWE4{yq`haz7QgO5aGjSB7_go53?;ELHH=0K)HMh zA4B*!!W7{X2wj9vB79ADcnaau2%kqdUOwR&;j_Z$g#R&QMGWaQUJ$-0d`bAS@D+rw z_Qgz?7JeP!8whI%-?ZjN_?GZ(;XCXAl$pRJMpK}Uuu%pPHpOvDF-dwtA7Oydsu^-^ z97e*Hu+8Cb+6)=h5%Mt~VV6v1XZ`R)5xKBHNdJIvqVQeedqSN*hP)v^{e?#~k!XFWSkMIYMXpJ~75kpg=OP=9R zYQCR^ngT+({T)6i7bggRNB9@QKM?*&{nl*^*)b*|GH3ob8{Hm)qNxx~EkaLl(KHo* zT13+^U&>5RrVaVX_W!lsj(7@;XeQyzoR@87=Ja|m0a(GrLT5Y3NB{@*%bG%un-vX%_R z($uqipUD>76VYBWI5#5TGb%xu}ngP)`L=zF+j_7%{;~j{s#h*fS7orCd-7O{;LWu6I z8vQ;*+Wd*Q`BSz#qK6PYA+d)MJ;F6%^eCqrCVWizI3@d>CrS6a(9?*!wS0uX6tiC!nuDof6rh~5(M_Q1K* zig*Xngp#f}b@4d`AZj9VD!z-zGa8Zq|K&qO5u&c-x$}&uEsTX7MA}2JGMHy$Y%0tU z>HbetSltozrm)_-h|E#T|3~j5`dsoKAo|b<(H|lDxT?`7h(1;8e^zoT{uh$`5)qw0 zqObeQ0GsinZxI=%TK`AiOW+6LkBCYqDd!)_`A2mA7OQgpiq=$!ev|O;!asz6D)z5Z z644|v|28DQH8lwHQLnG7NT5E2!<`aKFI1gI$iWpRutzW{{{9-Op1s6oi_H8Veh0t0Ut)u|6RfN0( z$`)*`uHYJFOQE%qzor0kwn1w<$!|+}t!&ZS9xZMDw{}!HcPjOW-UY3FB)=svzo=BT2U>e_S|_bXfY#p3&NwXg5aGUP?Z=GB*&nR~IKEm3P99%q9gNm_XdQyq zNVJBcbtGDcR`Q3Tb$BU>))8bf?J%^CL+hwY#;$;x=HX}^V+BJ?_m@mkOJcN+SL_Jk z3BnW6I;pgYihVL#XQ9PyBE^nE>r}K(M{Bg|e%fR^C^$xVhLBT$lAK+oJqIoMe^bS_ zJ|C^iB*67QS{Dj05?(CS{(tMz(rJiuIa*_l5Pbz&SC-{O>ngOaR%x%9qU6`1ZA0mL zv^r?rfY#k;-H4XC`kR#e=1R{kl>yEF-=U~+LS6x_WbQ=ku98+R_n`GWTKA$g9W?7#{}%l}T2Ba{M2lNPqMx2Z@)>dD|69+Y^`COS z;B3-*0j)Y(FQO&S-+BqHmzj_{IR&8gDq64g{cTJB-&Pc@H!B%U0j;;us@DIl324>I zCaW5*fmRc(5G_Xv-O5lNTJ-;D1tq8A^9UHN7FzA9F7)=Ym=*Y2w7O`0idHJI3@w@$ ztsJd_Vx;v5(3*(WyIk+J-s3{ZqJ(IDfYyhV?i_Ty4 zmuP*ZGJIW?>KjIJNPdSF*X?M1kJb-p{fyR+RjU7r|5GU``WIoT^Hq%e+A}c9Y}=j@?L*O?3GMCBo*C`c z(4GbDMbMrV?fKB24efc*o?S`iKzlB<=bYR(*ge{F3kOOj+VcNxZT^^k3efq}A+#4j zdoXtx+6xM`+t6N^o!?vp`HP~xJlczKW@#_39G5_Q8MJx-2koVVOH)`1677j+UudcCJWD^u7&p6JcMnpBV3o;gBC^3 z`e<*!W;K7(-cYFZzj+?!wTU?YMte&>ytg+MZie>e%$=Mq3`sMWt5&w2w!7#1#5ZM4Prn`y{kSvPh&)M*9?5d(;$`AC2}|s{Uzc zbN^rT7~vUcpILG${@G}squQNYan3`Vn?GfB(7q6DbJrK4eGS?dqs{;MLi-Z5FI6f| z6a86${IO_XA^w%ZtIAlk^)K)yX`6d(t%X?l>(L&E_6=y?NHOcBY?PaXHw$kO-YUG! zPYT=V&wDuSFZsyd{tE4{(f(FtmjAci z0P??M=jT(&AQkmTwExTHnRe=oK>KIJ3!(iB+JB;LX8!~2U%3T3+zR{~+P{}HpEs=u znB8B97esp!;(V>bckm}JblSQJOg5sVnhne zgm~u39K^FC=CLp0*?4=W_XgrQ5YNf4ok+Q&=0-diajAbE#Pbd$gT+@J-uxer z7jMaK5O2k5YJ&*zHi&mp6}CmZ9gmgc?S(rCcQmAMiA=i-;(ZYBig>qD3F6(QlT(HW zzW;@IFT{J797DuI5FdzmU(vk$BbogXA234?ukJO=TZh;{$d_~zo`vk;$68EbkQP&C51 zh;Kz~YOh3mK4Pu&;|ma9NHOMeQKj>eilZqY){{bfIpVS9M1Yu6fYFGrqJG*zTR^eZ zi08kEuM=KRF$QlC-YC3Dc(d>pLz6*#8{% zjGsdMBHy=)pB9c6K7;sK4sG(EL;RnLeqNjx42^^MB?Vt*kdm(mUq#IO|Ds<<{6@fV0|h(Fh$t0Qh8&JZ^dcM&^?BiYJD?5R)s!a%53z|4l$hiT^) zVy^!Y$HGp<*IxkiW%w?zgw6lIhuHkTHh=p4c_QL>O95$kAMt01b^j;+P^mr=YX65B zeS)}}0;GXyZ8LewW> z{zv??@E62oNBY%r7w0#`zpErX{}o5407f&TNjw>h|3+sjbml;3YIJ5o=U?bd!-lY8 zccx`INlYi49-SH3IvogSEX736jLz(mnMF9Oa5h8ASawu0CprtDGZ#8@)010escHZn z?*F4RuW(SA1fBWNnZKmPAB;}5`EP^8d~9c7bQVKr5p))%7*{N^UT1N1mY{9zoT8(v zhMlF*Sqq(|(OHA0=q!WIvLcp4M<2-QERT-9|6}E}(y~4_gm^HN?IzLB5mrlDzmi5DBojw6U<%@>>STn zmS=?U1awYhk;pkoI8t~rI;T|pQR1A6&ghC`uYj5S>FA6>$DRm`K0|mW1z5tfE8-k< z&Mj#PoR8vMbS^-;Bsv$O^94E=p>r=f7o&3>I+vhxDT{6Qx;vNg+`psqUt2JA#&X%v z;rTB*SE9r7U(r{iqr=}04}bZqO+x2-bZ+2eZ3Db>BMrjga1%N=i?~I2tME2MJCs3Z z9KRycxgDK5MBFL7OL({N9zzM6*nQ{(=-iLa1Eu}Zd62honG3go(0Lf0N6=}Y^C&tm zqVpI!R-?z!c?um%{v_uSyMbmcOW~){8BfhN;;i{>4(dFM&hzLzhYr8|z%wH|@3W3% zf6Lf;fifHdFQM}$IxnO18al6_qxZk8E1Di#D0W^)=MBEGXvr-XHqcw>OhD&tbl&Or zD0Tz0PYoSg{14KRBG(=&Qd8&%U3BdG4?eXiR_z<2^Eo<^G_*8)+URu9q5o%dvze?I zR^YBWq4s||Syh-EokFGRX&g-yzRU5&qP~aD`z0+tPifKl2%V3qoW1K4bUs7pQwFV6 zW*_m{=NbDYx_hJZ6_R_<`5K9h&2Nxc6Py449i8vc`4OG((fNVb+RK}MwubLm!k;)P zutk2Bg?~ZkHw|qrX3)_q05%@&B^~DS2a@T~`BPEV{(onZD$D(UBvT2eM)I$+t&vQF zWZHhaTkBh6*-lF`1CrU00LjcqW<)X*@3C7h=Fe^Akj#RFo}aB#_LgLJBy%B|1Ie7^ z(|2XGb}~1T0anNEfF<*AH$Isc$pT0Q4V?5AlKGI#U)qOb#QGAm9*kr`Bnu7fFvYF% zWDz8mc2Oi-BUuc|rbre?vLTWskgSSiNhHf7SqjOrNR~#j%)oY^P@%2#SmovDpsa7( z7qpTUkgSAcMc$Dx&tpR@SsBSH7mN3sF`p~I?g9P1m&Mo4VIzc7-Gk!(Vn7~jyUX|0)TMoBwHPc}!w z2Lv&B1b{@30M_M_ZIJ9{sgP_-SDa`HNVb>E4#FLUJ0aPbw?UF!*bS&*S3_}jN3sWp zu<@-HBQ8R+7n0ME?2Y6AB>N!QAIT6Ea$h96eQMp+3TeZ6%uXyYwH=7$AS9Y zNDe{5$9yD1ksL}H(uW~AoT)5m{V+Ka$I8TIO+=|>9UNFJBwhmi0h5dB#42$DxD+O~k=f%0*i9rZ~h zPjTQ->}eW`d6@;CLGlukXT^U`gVgHve7__d=Jfwa`28O~vrv_e0N5h0B6%0dYe)(t zuOoSb`YG@x{c~bYz(?{nl6RPv`A$IMBB_b4OKn4_HAdo;V&Zrv!ymH_kXTxKx2~+C zt^g%1B<)hb5D72;h)9rhl`5?`8IruD#qS}RC{^pRA?TFeL-IWmBfgV{50F^Zc#MnW zBP1Uq`AiM*36f7)K}#h>^11k52){(~)&GyRDd1aj$|UAYZ0ND5Kggy0$S0u0YWI_f zpV{T?$EN=uy0ats72T<1%-@jwt}OmQ!mIvBGzBDoA(=#-_Oo$)!5UQFof_R)(ft>? zGjf}#I}H_fr$u)wnRM(Bn?Pe{?l*ba$sJ@x|N|UEcpGndt6=?!M>_VHIqDz&cxZKcs`v-Ji33_W*Pc zv*C>Hfx?5(Jy^sc!lA-L4QWz}9gglR=vp_p3Ed;nJr~_!=pK*mQ8Lug%!Rfcj;@?P z>0`w?j!`W02z1Xt_XKoDp{wsdbWf6PM+#3C+WKFkvfomtqC2|Md>Xo^OW~N3Q+hUZ z&qVhu@wo+rF8BW_K-#K#nWD}|_W}_Y3NPZQ?_O-E;3eo@TGHZQj;{5zu@r~E>Ij&e>nh3XC3XY4Hkg6^H@YW?5U`kztbB%mpvdk0?` zAoDJCA4T_WbRR@l_y4>1ihrN*e&GXC^m8r#yAK;*QIC+YiK+XTf{$}~Mzws7K=(;> zpPFo8bjO#j3EgMVeHPv4`cahpkK~_6_XUmp7lk|mK=!I65*Dv!zH$XR(2Z-pAsIz5Q z(H!;YcF^VCGP+%%Hh)Zp-XKT!V{{92KU7ptI1$}<(ba}eS1)pQ*&pcE>}Ld3eN=Ul zPtcX0?|zD|?tgYaFN<0g*d77Cs#5W>1>J9i-=h0n*|>Zkr27NXnZ*AQ-Txw;2Hl^~ z{R3Uy|LOjMu3UZhf0FqX-QOm+S4p7zr=tEs_iuD3l@=hHdrYT7IyGZc7QP?F;Iv4! z`IGYfFQhXFVJP7lDcq-LMmh`90r6)Q&W3b$q;n&+i=eVzIw#V(N}4F9BvyMSTEUl6HYE4D$J$~UHqAeHk^7vuOPe{rO8{#G>xmqPX}(xs7_(Uw8l zL%J-|Gm$QbbRVS4BVAKsD+pIas`KA;Wd&D3x*AfQ|C(~^!|Ccs*RUw|F8fjcT1YoR zsv`gf*Fm~2()AUkm6AE+bOWRtiL+rpEhRUuH2fRsc1SlxN)L~8GvVe)w?InIUy2zb z-C9xF{7JWERKHZ)Bi#e(4oG)Jx+Bt^k!qFRkLCGqB`N=(%K!Jvzh@bXbT6cP_a)8e zr$c1?eUXkpYX1L7r28X1Sj+>E9w_3VDVpXGq=zCMN>2H>ksd~xz36ajKBPRjRB#y5 zV?`W=l>Q&-aN#kAT(Ofw=a2Mwa{8%GKsp+!{C|3qVn+&37M>y;MO!i9sfHDO8dCay z@i_$`<^3OW*z?aqdN$Gy(sPjBj`Uol*B~vs_xVW2O5V1BE<}16QhHi(%0ga(^wNL& zGc{jM0bAduS4fQhU&K{Nul{G(E*B3=@{Opltr^3NQUzJ_!H z($~vUA$>z)ZwlW+`nL5(q}l?qd`Z_zNpomO8%RB*O$j?l-O2u>GNX?)DCLocNOk!q zZAnjC$j2oLP_z7h+LgAx|3|8cIL(n36tis*AyPgCAbrO#m;+}?0o$24mW<)j>vZ?t5VOeDS zS_@wU%cem#Ew^__PbZun*$jM{iySb@&g`<8kj<>8k3q<0K{f}nS=l<-Y{J<&^;j_s z%f6k>g=`*WG&iyV@@<7_tJ!Q`WQ!p)C5s}Pj{`HCU$_91GdLL8f)%}xIC?QHTZGKg zT(%pTEsksn4m8`wvGu1_HZ%Xf0kWl$Esty&WXqCouPQLp<+ztfVg+RDB3lvJN;Hw( zqBjSaX$r_zK}P?NY&GHP>@y5<7C^Qpvb6^ObB5@(k*!nGhRDna>r^4QVmC?vHL$>+A#p97}A>5Lq_2TjU!OKjyL3RMLZISIH zOKyj3d(~nG<+3Alw4XU)YTFsvF39#kwkxvTYbmH)SjSkN}yvOSUQg-p)BFR+iq zh6wjXwx7iIFO!Qt5ZOVjoqf+FJJ`f%Rc1F7nUCyHWY;4*4B3gu4o7w*GR~E(DXl#W z*-`A7&AX9V^5c*Vx7r~)2HCM3Wma+_vg1k9bR&c(Fi6RhkX?stBr-aGo@HdGARB{h z6tdG)W;;+bLycypl-KVd-rnv~&nG!gQ0+c)(**WSh=L&iGUwmExLUsYN3rmh- zFGhA1vg-Ud)A?_98M4dymn)PXE4%{Pl_kdz+117r{~F=74F1#lHz0cw*^S6nVe5p92xqw-c{w=rltrP(-o+U#~@_i>`h?m%`YT_5SYkljs#khbK8{aFCn{mAT_ zKgM~$kk7^0L&%;G=V4@h|BviZWRF!E9;c+VslZPmdmEYFbIHaddmh;{tOD!%tnfKx zG#Y=j`3uOn+k@;yWG_v@e+AiV$X;cKF-dcz+3U#c<+XU=*?Z(t-bAMRKjvy!(|3?f zkTtCEHS2Q7>c|{qje)U)?T4&Mf-b_XI39fhqXJ|mA0kVTMaV3#7P5AKbeNa0M=jg6 z$U5Y(_jZxJi!4Q!v9DSzyK62iggs>10-}8BUf$zJp4mnpAo~oN74lOlFp}QXUPABJVQPW@+*)}i+pqB z(;;6F`Si$VK|TZW8L1)H7Lc`FJ`?hpSv%8XBbrgOA|F6L8}hl4&o0g!Y{z`gNE=HpT81V0J*;ZY~`e$g^;g;d|~8EB45OkDAl6E#gH#9nI+1! zqL)Ixf?}6Oz6?#2bN@%2<&ZC5(iLY#oE@|}=xjeMJ`sM|{0c1p5+m1GAo`3iveJ0sr{`7V|Ox$XZ9LT>B-L6X@W`5qW#t%?1nKNI;y$j?H~mwzQA|DT`Bby2Qsf%*C6=sZ$0L6c`7;uGR;7JT^_^_| z=aF;&hdOD8myo}K{N<`tuPEWG$a()0`RkMW1Leti3waay+sJw0A30wEKt6%7eQVc| zH>T(z4)T^{T;!h0;|sa|N6z~{$Rk5)=y!m&+GJrXY8LWC`A_H~-)7x5$4${uA;a6|3jCf9j$m;QSX(H#t{X$nE@>&IkGL$R{D! z_aE}g|L1>I-S}@5bD)?C#f&JXMln4KnaC0r(=d54t#CR++OU{GLHuK%VkQ)`qnMcj zl%GX7t8g|lt-Z=7E9OKoFN(QP%!5Kl0F)n~jCli-v2j-nLNQ-iWfb#E$pRLIg8m=H zg2II;EX^nuL9sK6MNuq)Vlfnp_qCPIxmXg#nkbe+u_B748O0ozL7~h4g)aY-vpk9w zChL^UN+?zqu}Z(U6sw}(=06I~^@>`AWk`~L;~KZ;GMuy3o)QEZE13-PzCm|LOPS~|CxLeF+g#pK(g*g-bjQMgmt z#G-dWF&xFNC=Nie8;U(q?2clOzLIhsQtX9di1h4@VjnL2Ol{d+i+#o44~2dFft}nC z#epaeLvav_Llt{4ibJY$4yDXLZFD$_qa|Z4c%<=B467vh3IOTSSrx~i7=_|k6emjl zIN|XqMwkGK6aE?R#Yre^^FJ<=qc|A_Cx}YzsVGiIF&YIw{!IQqQDclo!Tlc;XQDVu z<VQ&Pi z$0Av0rq~sIni*Y%;vp1Qqj(U-H7IUDVFEXzxDEw(e)wg};s%}(+s{_c#Z4s0)D%GC zRup%mxDCY}D8`|veo zMe#6-N4PX4ho?&@9z!u6#p5VUj~U@f^38yT_U%my@LH+qL}A_FWfae%c!?X-#d9dE zvM-|G5ip7un6IfdEX`s$+8%Q83W`_xgicj@|BI?#N1;am(r-%nTPWVfXQ5n}(;87G#$ggx+-M%>(=NcW(yva7Cd9^kzhFHuPpfZx-}srV;FCr+#+% zp*JgOGk$M&^yWfu4)o?6c;`;m*IbGjxi>d@0|R3Va_ouTdP{F!^ajyHcA8+_jGXz= zTL`@c&>PHr?YXbFU>PM13!}FhdW)d9BzlY5*TQM8-eSVVg-aOnb3?tQ&|4P0rCA*o ziH`u%zZ`liinF|eD^&cI&|3w)mCK+6Rwdm}wK{s-`Js_}YYNvwZ+-OEMsHp8)}h_( zM^tMEAcl5R@%Yfe2=;K-a65g$pWKZbrAAaor&Jr=$%D{{p9CV#JT95C;jIO`3+kpXO7mam!QYR zKY#3#mr5r;{!ogcHk>I$yft}nY$KH+H>FV8t-p%OU zC;ArjZsjl`zr=B(Z%6MA^zK3L&MNjU@%afLweP(p-)QmgNACd<50-rN9#ZgO^d6}= zkD~Y3z%$m19ycV@kc06_^qvy&G-7Ft@6{?+j{v>bVc##Jsy8eCTj1KNwdLN>fo7+UMK<{1jdIP&`Z$I=V@(=jP zf6wl8@mg2!ec=cEQi?cK!t#8K-Y1g$6caZ_?=$p%6904bz7X+cCHWP4Usv=u==~p6 zX97P{_5N|~A6q4qqAW=zLTJ-U5!s4TS}aK$$)2(&JIR_9DcQAIQYzW`(Sr8O%$9~;rfUm4}^42hQ-Wmp9d2Oqrf|~MAg}(FQ zyA-|);H%8yh458^?;;Ib+(o~KsT-;S-zD%>h3{f1YL)bhN7I z-^PTmhDLVX%djh)R`At=?@IV;!&gVQ{_$RKoOQKN*_V&yf~luR#&ce-PhDk%&sBW<#eAjDH1|YL)S83ZAz8fS4z9t&kaU*<9;cKQ_w=Pubj^7C1 zZSdU$-!1Untfo997x`q&Evl^kQQrsV(PLE~?O(1F9nziTUAphub4&PoLVhyiyGI>~ zk?YNOF9+5dzBceZ2;Y71JwU&$^afu$*51#4+QZiYzK+_zR(0Y*>nv6Jklm4ocGyMl zF!h{vh3_GXhskc_BSMNt$?oty<~fhU_XN!+$sX#N3s`JS^th3?TpZuf2Y-r+D7Iop+^2cLZZ|6KOG1ila8drx;qPwP@fzOPrQj(iz> z-}2)85WeN`ZG~?IuZorMZD#x`_*TRBDfJro)_VP{gYP4nACsRrzHE`j&){3{IPh(N zZzIi3 zOSh}V-Q*rpo|XG3{wJi^58nZb@8CNO-}mqxgzpFVe$)USE*`o=PP}&je}eDlk^uOA zg-_=Z_VYV@e^Tfapr#(uBk=inCHvKJpTY(L(l7}BG5A98S7)m*!y@oS;lC8Vn0BIj z5r;1Ue>M0__#DTAFR8WiJko#^{FlI&hQA_w8TiY*Ph1YZJcT?LA#iSVe9 zLbfjXpP5ImpTBATyg^$yL@4wUW{xdY*uYU^&|5@;#M{zd%=TPv=pVGNL z4J82ZmlZ)>jw}y<1$7ue=Y04tP)Fl6Pr_db{);@PGW=CMU6r+*1(>*;Q=kXXf0=WT zscXRh0{r|5fL!hVE8wpQ|FwG1{I%e(4SyXyjN0l-nsv#m$a>_}#(Ahft*R$A&Yz%)BZNkY5{-*HX4u3QFZ((h7_;1u&9m!4lSGoS1^#YS8 zyZ=_tZ^6yorq4|s{2lN=&iFgwzYBhG?uP$9_*=r?8va&%Mo9B}Gzs|c)#tuE@%?Qa zUuQt=ye-*IP2HFF@IM592lzX~-x2;!+Dcv~%d=^57x*85zpFmW{10kQ@ON?M2p!(+ zd*Oc=emQR4;Airer=;xZ;uG+9hyO7>AaYtIQm!li6CC!FWDoeC;=p>6y~y4|4c4O} zNA+p=pQYay{%5p`weUYj^LeL8-4A}5wxmga_+Mo60bV~Z!9S4BAkP^L{}4Ju9fv&( zhkqUXFT+2IM`i>M^((w2UWH%tzdjz8OJy{V*ckZN!atUJ9Q+gEXa3hi&A;UEPv9=g z6u{Tl{z>q^4gX~LXTU#&r)DZojhv%tEKb*=yy)=Hgnu^tZ_u0t|C{Rbn9!M{MLn}~ zxeN2)pRZ|9kJtk8EpnkyUmf@t!M_6jci`6_cEQizfB6@~zXbmGG)7JS{>%TqQ)KgH z^gk3*ELY(MucWhzTurWV8|opFYw08S^YBZzari%h|5Gs;_8I(t!oME=t?+N)$&!0Q zIc1yR-va;V&Jl)xGyGq`|D_h?3KZ&!$)jGTu2;7dqZCZ4lI}o_j(VlZR z0__oKi9kC9S~-yj+=Bpb{sXPqPaE<+vaPVB2L$eSHBAIMBG3(iP6%{GpfdswBJe;- zJOX?P#zC^HhscMW00bUE;0Xle&^;!7BGBFG83CQJyqG6h)dPW^?snb%>W#p&2=M+h zzzZz!v|eC(!26QVXi=Waf#+C!o_s+~jp>I#e@8QB00JK(Ag6U00s|2k$}40LPwQZg zd5FHSaz-UD&;r8|cm;u%)zNEdgwB0@J&wSu2x$ICU=#uq5g3htq*Sd`x~qeoB5ut|vE;a>uSea;J80zeagCSfo!iPpz~Vk8)ufL=3W1{t zq!Gv?kU=1aK-P(O8!{3Bx$24~y&-T6fxnz00>?!l@OP;`PrxXPz)2XA)>227yyj zi@<*+eZpY!H#GS>CXBOToTptG=a3w>v@%dCrW}m(SzDg0pxqi3y&f*0c_CQ|#zpSt zoK46XF{9@4N)|Q$!>Fy( zrBTPdl``tG>MA{J+N2(gt7YEd2(KZp)i;ZDR+ZZ8U^IYnGmM71Y3=QL7>!^wr)~^` z_y6kO0Hdjx^qZAT$}nz(ag+LN&OUE}A3TH1{m^&Mi55(DzDYjZ)xf{ zJ2Ji#jLt9~&=et8j@>kHC;Y>LMj!swxW>Q429Ap__ow*fGE>k$xN2OxX&EDZVbe{C3jd1{`~uJ{rU#&ay2*y`1oIdsa9~htN?rSHX!C230W&^2562>O((dRI}fU#K* zi(YJU0KbH>MW3_Iy{kG*{>C?Y{I$2OFuv8T>ovR$#&-6$1IGVg?Bu!F1!FIa-7*I0 z7RDaEh1TGGdM=#XKVv_P1CG{7(D)9<_b?8@_<_YAVerd8a)HVHr%+=K!}tjXfBfs1 za_4XSis0EWB>(>f<98T77=OUftF|7{^L#>2L}# z{-*wigV)c0VaOElFM?%wYEHrMZvN$6?x5y>jSuqvKX{g250cD-=O9=CL7vUvdD<`t zvMgDSEHC66@3*ptisbnSUVvad1TWM91S=s}MbBXHA{|Mvvh&WK){}Fa0A0ZzlyOWQRkCU?gk3>F6_8@zby~y6=Q)D0VX;Rkl zkXFx-&yvrP&yz2Z{mB00i{t?EC2}A+h#X7~A%~K~$l>J6%>JW|$w&{I$S7D8dZai|fdbNPWKu!B0rd{|J6Yt`|~lAUBemNI3$VDZU`TB)5=XkzbSF zkXy-b$!+9zk~c6x=KtU>I=d0vBf`nvboP;Y|Bv8)@&NfA`91jqsUHC#c#u4VUje+m9dt?NG^_&cfVKOm@o0gT`g(ntEq0BMkX{m2m_7?z&(p{=3_ng~k% zmm?o1CI9ndVs+$FOd%-wU$kVi5?|i`5l8aB-eOVb5R}xNNAMVelK-VvlD|;i0@B+p z>c0^Dhnea)srjG&3G!sA$WsVOV*d}JGZ8AIwV^Xk*M`obb9O1`T!hLZbRK=EuhX}* zDo2)A#~DMYB0|?8bUs3tBXj{m7bA2bLX{EH_kR%5w}!m7oDM>g|Gj+-U4qbM2vuX` zrKKXP(~9Vfjr#8R>zC3E z5V{$mh6pu7=z4^jAk>KQlKe~hxq(j85{Jd+2;E3=llpGYw;*&ELboDxJ3=j3dz;qk zOeABtgS=B6_qg4S&^-vXq~EHPe=nWZrJVZ^8i!C@gq}vI9YT*HbU#85BGewCP6%~i ze8*Dpo$2r;fV-_O2tABYSNac?itI+`ky1`~gq}p`G5U{_PiU>Xk3A6TjZjbey-N8{ z(a~$q+q=F94Mpe~gkD7GS%h9dNZ$XEF@)xL_*XoN=6A63d9Luafy?jDUtXfZ;sA@l}96A+q=(CdtuNKVp7 z_ZUt=XgWeu=}%MN?O_I;nWZ9UA+!LYHxZhPklg&sAm@~-okwTBI&Ke={}&;&kpA1H zBHy7S_x~khSc1@}2)&2UYJ`>|v;rZ%{}cLvk;_Qt|B&W?Z{#cK%l&^)Zepp|AoLMJ zYpK_%@9v{>t$tF<`HV5^5!!^%2I`HaYCos5xs>xIj*dcT3(}H6zCvmqLSG~NAwu6E z6w>q<+KSM(2<=B`8;je?9pp~E)t9fchIWy=5z?D~g!YpA$o~l?nEC))eMf#z^8P=> z|Njc<;y*MGA#~W&KOw~YA7cIwY5r%-ZwN8}hyFl_sXoLhAan#FpS~!TF!@SSi1|On z{2yZem-|EAsW8G%ArwKlE<#Z{F_P;)gc1l#Vl)x@7a{%sFNBgL=ZjE^I!$JT6j_Ay zB>+PD7r+R~<2Xf;Jc`gUg!CJFQq*tr%3XTsZ&v+7oqjL?4wmqWOW zzSkN)1L3m}=J$0aOr5jIbA%MvZbGe# ze>>_~PZxhPQh0nsczh;SE*uH-|cuK$B@H}VnkQL?*`;xU9D zr+9*VlI%hDBzp-ddh6M7bsvPErrDQ##`B*=_&J1!Bm6vlee(z5eq?|0MREZ75;;&v zF$m$o6hp|No$uZbE0@BfFVQBNmlkTc0Q$XVo@ zM=mAbCqE$h{y+Oicsat~A-n?NO$e_uJ|;gw_*06{)R*t9 z>M_|sZd7ONgVdjso5?T8FUc+BSLD~^H{@3GTXGw@on-zG@1)*E?k4vj{6C7l2=5c& zrI-CQ54etejW+x}!jc(&p#LLzkUT^lCVwJ-CYk@kzf%83{!acu{)sSCclZd4KGIJH z5H=|EnnyT9hRFySMK~rxlc6&^gcI~l(jt=@;HJtHQgZpF>1W6+nS%v{^N8JvZ~@T~ z2p18R^mvrD$H>3PdVOLWDSznUgQcyu0^D#d^C?pEwVOQhvX6v+EraPxr(fZ$knX9MktO_ zo7YF=ItDawOhg(Yay^|!WMj{7!uT5yY3evi-AZ#rZlt)0yqUZOk$VxjRbPlj@8 z&D#*U-P3o_xs$w$yc-d@|Ce~V{}8_mOQ8Y3DijBhuc}@)E$=Tqi^x zLZmYye0oOYC&0WyB3%&as=+MkWF2`Jk!KO`C?_dm|$E|4yw$KF#>P}#YeLV_DL{sVh~|IRPDW&kr>7z^jplTc`9H$^A9;h$EK>77#cXm8B6BI`dH#Gv z7I>OdKtx^w=wW2oB1GOntZnxr!u+rLJ4C*h zTK##5ZtF)xB8VJBB!I{vM1Du)Fe1Mo@{`7Bz|Sh&3-VVwIt4iQ`H1|1$e)P#5Ygmc zD$=i7pF4&KM4100%>R+F8>zKX*2WM?QN$5RAd*DHM8wiC`AL*Kvc)p5H0UIZdVnnjN!Exy?~uu zh-ei=ng62~(W$KQ@}n*GgJ@MmFGjQ)t7JT!YoeO}OT|>@=4y~!H8gq!qBYs17Fiq7 zfr!>Yv@N1nBFcmut&8YYtgT00t@|FmhP;-nPhLkhAR7u9%qbw+2+_u#(*)5QJl&Kr z%@A$wI6_2k5|bmmS)Yl~TM)gKVJ*np$lJ*~$UDiqgp9wNY>8+q&$)+=t^$W>Yebp< zRqGOPY}*de7ZJT5(Z^Zj`VY|#h<0SL6WN)3fP9ebLUtAE8{^T35Pg_VH_v&5K7SD$ z?T+YUj?b7UbbsYVU-U^td(i1gGWkb)YoyjbMfO4TY1a1j{AUn-mdLG(DH zud>xhM1RyDR7OW3IvUZr)MF4Gi|9n^apZXNHF5&^y8g^l8%{!WCdFiO3ZhdHosQ@< zDe4%68aBfzBKii4v&c8e*@(_@YMppQ=OHTNoR8=dL>Fk4_V5;>3lV*X`fYMiss7)k zvslRedJoaHh%QBRC8F;m`XQqF=P!sZ(*VY>xE#?HB@UviXs#yLl=9cn`N(k){g_4m z3xLd|QR#LYqU#aeOn(Ep5z$Q)p9{VH`U26f5&cpf9n2Q;t5N~qAi9<2x24SOi0-Gk z1JRv`?xo&^=x#*!xM8P{^FBnmggZBi=m7?QM}ANKpiSJ`gNXit=pp)t$)CudH9$xB z3;8Rezft_IKDUMFpLC9pK134~elmclfoPaINQQ(wFA+pzh(@(|x~sU?r^#Ro(KMn- zYMV@z3eF&U6wxfAc|>#SyFJTOqv(dYBRnQWMD-uOy#Dn`f#^So)kpLMVzv2nIEm=L zh*d`P6k=!7`A-=uL!LqM2k9}*|16$^SUHMw5j#%=HAtNiD9R&t0YwGGDpH&;^lC4p zQ%N1&)agLJWL+=v zDi-S@rumdsyca#da3vo`DvAYp#iFhrgWfIF%e5gQ;T{g)6MNHNH9c-Dp>#%0`MLlGN>7*~Fa4QJTP zh;i{ZX|7j=tpDTmGZHaftj`;puK$MESg%%>fJSUQ`I?&A_I1P-BQ_DSx%4L?HW{%u z5SxP7bUIVXX-+)#405JA?&+9?*qbzGBR0o9@@~~U`tuQcn_>ZCZ&551>cb6NgcyG* zAA7gNM{EgV8xeaCu~mpIWvllQTaK7>QkEg6Ys6{%>2tjTv6ZE|U5(gBh^=8;zI=$S z(^_s9v5yh^3^6VNp-1LZ&tLDvAhy99-X_GhAojWEZ$?ai|BIOZ_*WmYwpi>d#J;7; zp8&`7C%}m5?|*rmw;{F@vF%z^e}@Wf#q~ec@qYgs+l$yS#P%VUKmq{@?0r*gvF90VgT`B~JPS4ypz03s1G-+CCyfd%gw(G;NDVIZ4mE5^FGAeBHoc& zrT_`MpKOnK2NC*kd+UUFXI4r6S0C{Qom#}ZBK`!OhscK!?}m7H#2;btQ4KrYk4yp5 zR;GZGo}Z-CgX~H6B6|yE>xlP3d^+M!)9j0QKg4DIH)jmbA}+~aI+Wz^I4`KsR{as5 zfcT4uk3f6?;)5CX65^8ooybAnt_@+;P{fB*4ATJZ;bkY1`W3`SBQE*hX*-gUqnt?U zF^G>vd_46yr)TQdysf;>;zV*1IT`V(h))r%58dLl63qa~|FUZ{5r2bX7UJ_MWC{>} zHaQ3Jxrp=4pVR#;KztEv-y#>1GA}q=c?a>Oh`)>Y5^j`l0kJLO?|GwrpG_qHYZK}Z z5&s_X<%sVBVZxm(3*at*l_@pTj*2`N4%){h;Q&> zHnM6H$z|^1o2kD*{7a3IRZw(8U#V8{HTey>74dH=wh1Y=tC05=;ycM*LWyd)NYyl<0q(@|KtBs zpVAl&_)nQAL!N=end-~AR`YBmVo02W#QjK|iv$-cNt}lSkhlbivPj4x&p#nijx3Kv z1qxaJnJYd?u1;KlL}i*6l9kAdG(ZllwylChRf>z%JndJbc`11rDXRcUd<~(_wuvi{ zXpBTnB5-r*44kYfR zxQmoOe=iwKDaXy+)+=oP4$3dc<3hlW)60?x#fW$x~IwH{% ziB3p#N1`(lUD?S4SHk_%IUu&&NbJ^|iN0#dl5<10F--af&C%Cz0rJIzZ!l zA<++s-bg&lfTxh?g9QIHD)F>Ny2tq$MY$hI>PsnSb@X`NPLLI zGRIWvhL)?)wkwfXgTyK%68v^Y;u9p+OBE8IA|e0(bsKUC0_852?GgP8m?sIL09W`!;FcLQT5#;5QjMzi3Ci^4<^hjk+5J& zf=wdvHxf1yStL?UKS-q6oF4&bpE)Fobn-~>2)IY@C=!yZk2$S4&f}%@KS=zC#0fS$ zN&bt(DQ6#bR8A*m8JK6lJPYQTZd=zs+a0-iF3gKyo(J=Mn1ERxCcpn9XTdC|O=N^7 z^S{ab?>4_cw`gker>Nv@t}@K(Fss0S&LPd!@L3} z@BC%OTB((@V`}neZ5?mSbz$BB^D3B3>1I8cSHrB&m}_7%`LivZ>tHs}9++V1=oA36 z5!slOzkt{03(TfMie_YUm^XUPO)B(g+ye7Cn76|00J8;5CVBHVn76ZuuKx^E^S>8= zH%z8_vn8uq!MsPSoGZs{4YM80HZV2q!@SQKiA#0lF92kt?Y-VQ!t4pN6U>KUc81x7 zt(gDK2TQf;3RCmH*Qy)L?l2!=F!R5=FOR`|66WJDHTi3E_c(A0aASJG)I1NfH%xu= zpSq75uRiAj^BI^rL3lkp4|4>}7hn#7*$?JRF#CILIR%&loFl;A2ErUfF<4{VBQuoF zFm-e*!(qOx+8yC5Fek%&73LV2BfXeWFh`e)84L4unB!o+26MaP<{G2G7;va zQmv-IoFzq=Q(;bnIRoZ&x2;}{Ghx2rjKLepn+%@q#K4^6`SV~NggGDPmoOK=+yL_} zm>Xy%WipjW9QPJ$w#xGfn1y_Z)43xeX@s zzxg$5ng6w)tt@g1kUMsBJ51($a|g_wF!#XR#em&HeK_|&Cg%ckpE|myUj8=^!2Ay8 z4={BS(T6*L9~}+z5X>~p!%~DP4^8qgeBbBbQuW1jPu=ll)p44D5&5#|Y)rzlRs{8s}w5<34WtuoFQsm~rzS2J{0KnBWk}u!t2(Uv=+}UCIjqL8u7Gv5enx54gjI{8wveI@tSdcTm(EqN z-1VRJt49|9|J}OQi>c2T{zrh-fVv^cC7`WF`d+tgNZ0>|b%T(iDXeC&^k?s|n!~!$ z^KXL1#s4jD?r{09d17G5@>$kEJ;d)^u3oVNHUiFA8Yt6aedWa-z4n$zJUg`cp}L zEx^&vfHfc1Ojw%gVZ8y1(}bn@--)3w*Wp}>d1|^lvVhK85N3~42-ZLn6cb~P-`?XWl(SZk@*kspzo|Jn9a zSYN{W4Av%C>($g&8(?j80$BXq^Ebm{{&(AM@%*n~eGO|XEI0pqyT<&l=XyJ=?_lll z;&;N@1#2HH&Hu3WkedAUq47Fd(A*E}K#5OBrvO+#z|!Oo>!4E$>kx~FwW!a{pJC~( zJFH(|{Ys(9AJ*@%e6aqY{!>VC#5+@d&k4X{@^{Ch*`ASMGD31Luwt;{UTwnb$3n6K ztR#|>Z*5p7V5MLcVWl}Xz4?d5FaM~JuYl(1a4O+9)qRHllnL;e*SCyqfWQ> zG*6QHMIee(u>Ny(vJ8@Ec$!}U8nX;Z-u%mUljk6Lu2*}WwoL*_e)y}p9G&v+cYcx; zk-Qek^O3w*SGY}HKwd~zA}>O+vIuJZ3t%KQ|9j3QNLEAgN+d5uQvaS9Ntptwd$l!? z7jrd>*XZtO5A~6}1yn)3AWJ4sc7eUIV7K_c)_VfvLBND9nF3Qu=XV+haox8iy4IE zVEVfL1Cm44ce@>q)&Gg*8C$yuesW+VAIl5>z;h2&fY%tP`$B+|8tKR@V2*!caU6+q%QvEIZI0ErARJE@_i(iv6ZeACt*l(@dsD0VAaY}tyUxX z8Io)0uSL>1ChJ)I$k__@CrEy(t=xXr)7;=VNNz+@*MBG#zZuCd81p5PUsG&B@+&8v zqxuHP?MQA#avN*EEosZz9W-~Air)?UQzZAmz8A^8uqFTOLo$Kn|B(C@$^A(FfFyta zo7CU`>eq&o-)o;LengT#^-Uf`@(_}T9pC+iqz3$q1iK>a3t;P_ zK<*Z8UH``^!q&wf>~=TwDV4fe&Je~H&h*MDQ=WnN?r*!5sv4!bt}D`3}z&6VFu zj+k8sc3s$4I&HnKuJXjyup7d@2KIHZuZ3OT>A8fk8+eh|!)^?_(f{wKi4zICDeT)| zH-mk%IIx?;zR`(}!RG25y1!35@zNXY zXS}xh6;My>5)=r_u}8Czlh}fKiczR*sEbL zfxQg&d$8YU?NaaHeBiW|BJ2-guY|oE_6oO8_ln~B53XJV`y=+S7PhYcpbu^Pv7=$@ z5)gDgL+T>f>tP$PH^ANwdn4?xVQ=yxKZm^;_7>P*z~(#uUT+cr`zxm(>Th7{`VZ9K z!rta+Ze<7TgRpnP-pkruuy=crdsOJy_Q5{DS}p-$>k<(3zk~e)g_r+rUH`$WJp}s* z?8C5sfz3(5{<&1`udsiI{hJdkg#8EX)5%}DrRjss_22A3skTAbCt!zQTd>2hNF;?mQzf%jFtH9~; z`I}X||93Zf5~&KX|3&I-*r$+^g#Vw$q{=vL-La+4M2h*}*;eWtq<|EE$*aM7|L<-q zRTimoNb#FLCA*fY=+&Oj&M!dfLZm9G=`@tFr79zJFH%*Ix(2DLNY!NI#YkO(lxBOR zs*(KurxvRtbvd0HrM7-WDP0Sx+DO$!s*Z#)@=B)`sjHBx=jp4RS}7uREmF54RUfG) zNL`22^=#FEY^Y(*K}$8F)7Wv4x&f)?beba7tW?;INO3MmaS1r>|CUmVVY!NVRtc zT&jt_1YlTaH8uVLQt$sMx+3)?QV${ZD2opx)eWgfO80|Qcchs1Q~U{l+s_kT4?Wnh zr;wtT3f=dokQ#_oAEf#t^)yn?BGs1x&p45cc@C);kb2(ToVM!cG-u?CP9#zTSbWK; zLTV6FuOc-Vsh5!&g48ginE$z5MsfF>;E%iF2ETr`2A1S_qNPR;6DN=tTCHemVQtOfW7O4&NH z&EyxPP60@5A-^KOCch!K3iTmhs7`I8vz^>Q?j(1SyU9J|UUDC)zyCsNztDXdtHtk- z(&Ud6CxXXV zWQ2^8F)~gjgcPRJKT=5+nRDE2rIF%WJ*f;*`u-16Ic?>9t6YonDAL#DkJK^pFY-9a z_kU8F|B*UDo+SSzPm%f(0O>NMzW;;tnL>)QkUpE@9LLc&veM@v52S(2k4WqLKS-BD zW&_gYk@*zq3dr1ubVa0RBYi&7A^@}$jD0MMPy~N3RxBD=aIe`>2640g7lq8 zS3~*+q%TGK8l*2n`U<40OC*D9ke6#w-X2faMEWYEYav|+>Dp>KzdK7`i8R0bFAlG8 zwyHE4t&wh}Rq~`r--ERG{ZIKqmmcso z9JQ((ycw^b_=-R7ci%P_rk}eUa`(zck*h+i(cYp-2x?UppC2zKrw;&v^yuS80y)oKY-} zMtTgzSaO`!%3JGhKd&J@!PBoZU?S3!C?=CryxOTOP9vw2Gsv0b8%WQhcvGkk`Isy{ z2kEUy&qewJr021AKDoe&LHaGE7t&$=PcQQPcWAzg^kRx7p085?(o2zkUmfQ|wDdBX zA0qu3(whHSTtTixdKJZLat*mwNU;v-k0><%Q+$H-r;c_eO{CY;-#~68Hz8f}+}Vuu z7c@2hQ*0r>Li%fpZ`6107Si7$eH7_!NHblhw=-Y|xfAJK6q^4j_K=(c()*BR{!j0x zd4T+m{9dRJ`4loO$x2f$(g%?~gtU+PFw#F!{7n8r{z_{8r}&-x1L;30jyOL1^g9~q z0MeTO84x5xWEg4Y|8$f^&HohcS3r?AJ;y>i$ts&nk!dnRYW}ClAr;I9tpB6 zDN{gs5!4mPipZQ#aRI6M-|OlkWNOl^j7$~vbz4=DxtQV-vKo0Qd6|%+Ix;mpeK|5$ zsCI`}%kyg^QwNy_$Xv-Lbv^$o7VD8$BXf=CUrVPxd7YYWhYgXr-iv93Ok+H1F~(}Mv|I>E^FbZg}^qfBpPo=4^>WS-GPm+6Dd)5!F7+PaZK z0x|bo?-;E!5wJ#wv2pP@)n)Y?C2O~4YEq?YI8xBKe6f(o9UnWN&^D4zF zrM5fL(a4NO=5=JoATu7Bu@c5eP61ox>UH{@;P~9)L*+l(0xtaWe$LC9O3;7lKHTey>mHZZ&y~u2%-cIfycM2)E{##}@wJrh2{`aw{ z>%SqhpFBW*M}ANKAk>E*jf2QJ>E#eIhw1!8GXH0o|1-ZLdjgr?kll#P@5sK3%pb^( zL*`FpZ${<_vezTS=_BJuwjMG8_F#}q{uw6!OqfnYND)OQMiJ+z5~SYzBV&`L~iNarYdjQoo{PX0~)L!KZ{lK+yYNdEXY%OC${`QzU#fBc(0OKY?I zfpGR5>T^l`{V%d0%aZ(QaJD>k1+pS}KFJ>iXZiczY$ZAuk(J3RWL1*C|IPCEzghkA z53-k%my!DWUu0{L`uksGuOMp*^=M>kAzRzib&%!nf3xmO0Aw})GyZA@YyL-;$v>;f zpT+BtZ9vh`alGCd(QJ%t6AI@4Y*T8@|Hx|cNA^bYCZRrbgts93BC@w4`!upGki8dK z=Kn17f0p?_%lx0ci*4^lwiQK7uZMdaL9;c<{GVn1&$gx04%r^a-jD1P$hN1`fn@&A zGXH0p|FaKpRLuX`F4WBbS?2#N^M6+JKeCUIkCNTV$H>Qp(mA!8{Hc2)`xLUhknQc% zI$_B6(V`pQR|K-pkk67#{%Sst>J)(NP$9)I zWQRN28^8!;Uttv|g6v4@QRHZH49WcOtYDTMkL)yLHUG0}0{J?!6DcNqzGREc1U>^FOk>X=IuI zv+Joh2;G(6vYU`Kko_FlpIEgS*)OzKn|z7v7K*RPugP!7t>m}lHgY?%how(scObiy z&MtB{xrf|K?j!$4?k5kB-;v*wKaf9?2gyT1XUyKnHUG1UQ$SXxfZtgBo&1CRlRQE) z|7ZQwn*W_+h-?tq6irS6Sxy1j2%RXhF^V{uAWhODlcX*5dP~#EsH4X)i)@Y}Pda9i z`Y3sf{0rH?kv%S2ANmaXr<6X)n17KgM{x?-|D0On${=@!nz=K{v&gf_bI5ba^GJ|o zh5Fzngj{)=6_Bgw_{g14=K|y|q^Lw*L{=uNkX6Zxh5C?FpR49*8sv|d6 zcPCc^xyz9oh#d2OPV+x&ZrBW3mZ(1KE^phFlBensfX&lA8aKyIIGt8@h$ORY?Cf7P$~a?hfiZy{fyA zyW7$9Taou5_cU_%BG(PM*2r~4t_^bSkh_nyZ8hHQ`F`X&AlKg6uF@SqC*-;!*BLpc z{ha;$*s zp8L2(?W(V6*>l#pUHa${7x$7&pM-yk<0xsQ>1jR6zL*U5?GByuu21-TW-O{Jbj zPA6xOGs!oE6tj?flVUbGhn!2!Bj=OM|2gLW+(P7*Aon(p|041o@?BE%zcitKk8PKd z?~@;p%g7JO(nBDp4(@>ERGIGz8vxw z=+VeC|K}?pulXN&P5#SI5;gOGp7}q|{GYFi;FF`(td^O~!BY!FK zPa}UB@;#8Rj(jWRYj7l&v!5%FZ;pIT-HI${ov(#_ZTfZ8(T!e-d|e8?`A5DUc{O~#0C=Hbq$TR=vng8>e|B>hWKlxj!TadSr zx082}capsS&)-em(m80{(|eHbjQqXG-;aE2)ff2@$UlSp%g8^=fal2P$rs3eWPkESasa7Q0P+LLLF8a^2sxA-CZym? zfKt1U{42=6%Bqp%C~`D8hSd9iJ``MaaLwm|4irMgC3d+2kB;;yyd(A^#Tg^XV^8|8&(tl6imm=^Zq}-jRD)80P3CO zE^@c}&R3N4dy)SQ`F-^NNA4#Nkl&HtlRuC@k_X8{8`Co(-zdEazBmX<{ zN9b@0$p7h`FCX#&`hIQVonx>KZbl1c?>_R0JH2<@zGFio| zlKg)&3YVa8B?{G0sDZ+z47iM}F4VlIqrDu3S}0sWT~qy%&+H1dQK+MiySch3G(+Jk zM%E*l{|nbpUrW{}uOl0f4aw`tMr32M33-E%qG^@xeJPrgHLE%pFE>iQq`}KaUYDM!N@?NsFw_o?6Fad?OD7=6|I~01La6by2 z7}K8YfI>$R`jF>Zp)<_~$Op+TWLNSb@?o+Y`3U(a*`0ihe4KnjNa4N&K%plJeNgB{ zvp4ya#yHQ`!qas6qVOyVQQtA*!Kc;49~Z@>DXFp$ChQFxJJ0Qr)(az3>$3_@Wf z3WMnnA%~K~$l>J6D7=D#-v3LHN8nWzu4eu(jArB*6kbDNEcG~Yyc4E$<6lQ%I;$p< zlgP>B6cnbSFimu+ZOzc4p23+Yyy59tD7@)tj%N;va)r-D;d>P3p|BB!`6#SFVF3!f zfiJv;!a@|@Wj}ADun2{BN;W}rF$zmjSc1ZP+O6!Vx3jEe{x4|$XYoT6mOGkTUrBQn z3ZI~`8ijQ%t|9gQ--$%wBRU^D4hkjyXDF;kL2v#wl0;z>3OgA8ISQLm_==iSK;cX3 zEnei;D11xj8&Y2ah@jqv!gfcCiNa14nB)t)P}t3YJznHq6&j=YpH=(G11NmwRI&I2 z3V);UBMJrz2T}Nw<{=agqwpIFKcVmo3P0-rPLJVNN2BmN`~O3G8}h*DMMyqF3oUV>sp6f2>4z6NMl7od1yNidy@P^^q%Rq84wRVZFu zN>@XX`M=2gU#zZG?l><;@g@|nK(PUeHBqc5K8m%-+9=kcxRR`kq9%VG9*;bVSJS^n zO>M;~pvWnps8fI!))2+(8PEvDrYJV1ZbCBumz>99GZdR^L+wqc0OmL zy%%p~Z3`4N|5M*i-l0WzV0WQ-H;T;j#g?pXMc(5Dv_`Qlify!sZtFf3x~+DebHC?w zK=BC_JEHgqikuXRol)$9;sb1``QPiaD~b=J_>j|sXX;A;$3c-(K(RZD%>PBr|4wrh zpG5H~(J1yHd!oqvU+nD!D7Cf^`80}sJxAXHqWK((f1>z2igQtXflfaZ$Dr7s`b886 zqp10xMV$gr97qmQQ}=xcim#$L6vdZO)cns{odUc~j6m@f$M>9(j2VTZ=6}x|i{eE3 z<4_#$#H08coe3zu?l|1yBosBJqc|DGDJV`yajF+TO@+H_GfbRR&jN<$BmyqwFxU^L52PiH_(aZnE z4@*_8VEjtQL2)&Tn^9bY;(8RPpVKp`8Clr5n0$BW&{7oIL{T;g~z2*^+{ODr<42=HEk0A!4|HdcQ(Ff*6Fi0>M$M9pBc5G`kcw7v|>wx^<+{h zOs@qnSkQnm`ae+pH{_xiEN0_ius8-wSZwOB6b36}urvnCW3Y^IUUrPs|hbf)8{`1oAdu*ErZv_U>yV2HSKy`J0|!B80><}JT_G1$uha|;;kDP45Xy)hVNOd|e0Ui2S>{Y^XCvq z_E6IvX4=EMc1-XiIn|UH9L32`!r*8O-ofA)3|_|ISPbsP;5ZEK!oa-zVQ@nCfewQc zP20WyGsWO!({}Iw?C_}=oP$C4{?87dZrbkUpXRM5gEP&KXPNeFA-iwG4$j5kdJN7p z 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 _=IcqZW)T1$2W;aM$y4&ix(=ZdBIenoh` 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

H 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

*2|MFu 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≷ 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

y32p>)w%BSU-gZ+3ExDQ|6an^-%8w{$P4nCDrXI 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 r7N`(R(}hy8JY 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 HAax|BD|<{V0*6 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
    `Heu-QCPmL%R?7d(z#P?p})Tt#%)Y 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%0A>k!bb?7AbgbYG0%V8G5zpK!lwwIc6;X8yT{#hHf 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

    ordhk$f_9^Ao~*cof+gz@@4WB@>Oyc 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

    h}&ZsP}$t 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

    BKMm1;HB1Yju?G!R_{N@!??q!QjlG3d zR%Hs?m&QRf_M>qCjs2?()^%WIXzal>4jFi997f|&8i&)kg2oXv&ZKc9jT2}bMMDIi z#?d++V^bZc)8i$Bxhqbjaf*T`(a?u~Q_rb1PNyOIZ)498Tcu6j*2q}}$5dEid(*UG#3ys@o+&Vy%aJ!Co*b}&m#(gx5{?oWez4s16XxvZZ z0U8g{kakevG#;iQT|kOAC-xYPw`e?0;{_T|(0GQ%lO=)1Q&kj=r!DhY#h=qr_1~PT zihtuJ8Y=jWmzD5}je3p78;aQ90!Z>VOQhTgjkjrdG~S`{F^zX==mUS_J>`r3+aw>- z_-HUy?%}dx$)=4pGQMR3t6v-PUpj)e}LdG zh`$p4Lio$#FO0vqa^yz<{6))b_=^cyj3pFY5`SrYX#~|;3NB;U75!IadHfaBSg}Gh z!^-&U;;(|gy1G`yUroHaWkuG&UlV_AeARz*6ziA_a#ri%Z;rn{{>Jzl;EVX%rL_e} zotxlqTH*Mc4G5)yzXkr5_*>&|CAh}ooA*Cj;dc0!v7F%|7 zDE_JVhv6TGe>lGCynh7#k@!bdoS~>=@TDD8>*61ee^NQcKLP(l!AD#tZB}8&QV{<--uY&JCkN-mD)od?Wrs%&Sui}f&k!_NJ9}HKfqW0H&ung z8Tp=SFYqJ$P8EwES6=)Szm)DSeu1z0FH2g(LUs|J0@_zE;v6qg3lTv@?Ys;Szm(Oie->NMA+xrX3|xfac} ztF;7?b68jT>kV->pt&Q>4QXykb0eA}^)xr8xd~09|3a3N*<4*)n1qsTE1KIXxHV1H zf3wZ)Xl}3gnCknk_6~N}JJH;m=FT*Cqq&Q^b`_V2-JRy1G*$e~x_i+aYZf)gJ~R)c zxi8KAY3^5MkdM@JfEb!b(;lSb!GehQP?}fKJdEb)G!LhF0?i|69!>K|rH!-zn#a&Q zj^>E|E8+NZEK|`uk>)8hwH-817SQ0QD($pts`eQ)FQ$1W>rEqj|Q1XUUn!A)iCj z>c7cwKFtf&bwN35%@>Jb>`Q1~PV-VFsQ#N1yF!t&uq&&~!k0R)rg=NfYiQm~^IDoW z(7aAuvb6dAui7`#yr~MYh228)R?9TM1*Un2lJBH>56!!*_ih_0>+(h#cg7RzfD9tZvK1TBcnvc_bo#qoXpQrhxuJRPkXK6l7(iY{a3R6D^Mw>M$@Zsn^0Ro)2FHWZ?c6ndo)`#W6jW}8PQbn*S2UgCp1%< z-71xUa)uerK26nsS&TM zCLoxUU_t`Xe1eHAbCQZFl?0O!OhGXD08!?Y=B5g!CYXa@6v0dc5KK=n4Z(B-(~j`< zv^8o5f*A#`&Oex0!C44qBbar7D>%E&KPSO_1am1kH^FEEdHx@e3Ffug%=16N0t5>R zK`$b~!UVe#EJCmj!J-7K5G+QpEWzRgOA(0v6D(=?VypNE%Lt;S5-dj`f={qK!3sl6 zZ3ltqzh$nfwABdKRAY4l)qk_!wJIio=>i1n5^PJb9>Jyr>l4V+KEVbA8&*uYXM&Aw z)FyVPn-OeDp!y$dAzqVzD}t@7bJINA2re16BiNB(jDp+SY*zn+oh-65f#|=@wj04Y z1iKR)ORxvQK?Hje>`kzj<{4W>Y5si(_9xhvK*e7dRn7qfBX54nv;+qe96@jh!C^|U z{|ZcYeYhkP&XEL1tM@3298(zz9!GEzfr`IGoj`D+cunld1ZNPOLU0;^=zoQmBf;rn z%W0fRa2CP1A(u3QYD#b}!LSBUROOW6adsajGA6!9j zm3qs)Tq&`Y3=02hf@`X5x>M1Ag6nm>p~4AntoQ^s6P7pXEd*Z?+)D61!EFRj5!_Dj zAi*63cWdCCI%*4$)4PX2G@syJNhrwu1V;I7wGRt?D_mcP{#iHU+-@={~t>JQ^z6k5B?#XnBZT+2?@s| z{69h!f4vq$4ks8SB((Y;ivAN$s^errP(I-lgtHM&NjL-HRD{zKPECl?Mp@1@1HR(Z z5l&yZQ^Ji2jq+CVIhd3W)GbiIVVfI@;g=hUe(?Tta!hLwFwH`Ggm0!57$5(&vA3Gh9M=CE=xn zmums01rT0AXnuMs^HkTA@G8Qqho;xkx{&ZXT2m8VPuM2Bf$(L*8wnpIyovBG!czZl zC%lEwzWE7nlMLlY_IpQZ5Z+l$)z)?p-a~jFp^Cp@-cP9dU!Gq1k@GK~|DPm$nD8;e zMmJsKjCwPFA_da_(H|B{Fh3ae5B4-2;V1smGEuC z*EIZf!Z+1;LpbIzr6Xub+ft6aGN>GvSX_Ho~7Ir<~+3g#XiQBQ1c? z>VNnLt?D}dN%$AxzsmeuNBjKW8c%YT>$bE7lxwvnpfx$I329A2Ya(?`Tyd&;XlV;* zX$uhk6gI<@w5Bpl!AH^Bjuy0*p*0Py`Djf`Yc^Wb(V9`yN(-PhgM^fOY0X4y7DYx{ z0IgZYE7@kJH4m*hXw9XZIc+g>3qd)GkJfQsK_ut=v=&xm0a{l7TUP&Di_ltJz0v|` zEhbU2))KUqQe;VsEL|B2E=y~DTFcQ|mDcjKMDS^?Kx;+em<%f`DEe=a)o86lYjs*{ z(OQGnnsNn|TybcvZJF!RGQat?$Og1FEp1vG(%MLkjcILCd8<6MHlwvQt<7m|Noxyn znMzdu?LxFf|7mS&qsGuWhSv79_NBE0EqTS_jb*@izp?cCgKMD6PY39VXL?P)R}S$O@sQ z`rkU*u5~P}Q)nGmdTAZ6;|a7*Qscy-{L%unl2d7&N$WHvoGzdQo?*S?Xq`jrECtW5 zyc%^bt@CM}H$aqdflTEDE}}git&3^BLhBM*_t3hO*7dY5qje3f%awcutt-_q7oFBs zw5<3KzWc3fXa_Y29qSx6%@+r*#{x+iBfl_FIXD;CHE4T7Z5R z?xpo4t@~&_O6z`F52;tW0Idfrj@l2?GWuU7r1hBMkJEZWXr{KOXuUw|Xyz zV3{9^A=lz#T1{G?(5lgLtk<<(k5;3!X_*#4Ye@WC0j)MI75`SNinRqqv^umz`~}ey zrj^qAg;tl=m$Z7c`m{1lp3^dKek}7-TA!=yGs$4Wzp%-_qV+wkuW89Ue_G#E99r4} z%)Wl0B^`~{k5!a1&F_C{{Ypz7?`f5a_ZzK0)c$>lY5x94an=9UKWhJ5acGZEdsW*1 zM|)=46VRTD_Jp)26Ha>~+7rui?MY~h@|(1!y0#}*!W04ub4r_SYTEL^PkWS(2thJT zOIy^Q_H;U$9|34Uw>qaj>dfNW~hq1891y#?*9G|84W!`5P$O>IkiAKKf|-i7uU+B?$TzRF2^ zhl-=IJJH^`!b_0$uC(`{y_>pJ{L5@o+n%(?(%ws$x>?$Ln<(+_OZ!0D=J}uY{u+M3 zP_+jsBKlAJ5DAp1!{|Lp`*4yaX&*snciKl1?M(Y9+Mm-tn)YL~kD+}P?PF=5P5U_7 zr_xsaZ=XQ>WZEavKFO>ya$Qcb`A?&LrmlE8Z54k#8AZm?K1*n(l5=QZM*Cda7pnI> z+UL_Y%5OQP{$E1-;-RQZhwRHW@Cw>j(pK@e2cNpv~M;$GS~6eilF4%Y2QQp4%({u?K>+bZ6p55xtI3+YTP#z_<+4Dq#daD zVcJIjX+K&qX+KW;ecDgZexCM|miZLzr)fV+TgBh*i?)6L-+qDiYqVAT+b_|6Mf1O0 ze$UqY0qr{N4{1BJKPtVnKen7t%vlL2 z`cJz?+Y_(3OB=Kk+CFWOdfH9e0qt-QRT{M0v^(k@djHe5?|<4U?TmI;a!LmCzW~wB zX@5$)pxqZ&xtv*1#a|KHUl5I^{UuQ;vtQBviT2l;qdXpBg9)!dCJR(fA7fOEjL~gZn?yy+jijW;7Ae z^h6UAO-?k4ghbK;h@>^hr_3KsK{O4~ltfb#O;v%)8AW9O{--J_npSZUfBBTxG@5~E z79!RE$ml=O%y#uziRL1jjc5*{*(Jo}nRCdVyUIp1kM+(=v_8>%L@N-@PqaAE0z`|H zG@=EG79v`B5U%wvYBSjX{~=m}Xj!5qiIyf>s`6^J%M1dEmMd){(fAI+o}pqT`58C~>0W2OOfI=l|$r^`2s5Pa`^;=yW3O z0?`>3A4g=~{8W__okMgU(YZpvgkcT_YS%4C;E`+0ix%L9wd5%=phYxc!={T(bGha5j{!tIMEY>Y^6c;)DZI- zqUVU76{P%>7v0=TFA%*!^dix#B~J7b(aS`y2uHsH3ce;&@xET&Cq!=&y`#umI=*eQ zy-W1IBIf;%+8>mo*7Ffjm*``nfantuW~8)JJDZi{Gp?H{wMmI&Ui%s5Sb@` z6WbY|j{Tli*RC_61a>B(GXqhtoMy1COwE9;MTxhw>at=Tth!(K$(7$J051 z&WVOFlJjKso>Jj-PNOqUk<;m%LFdfD6|@VTrQWkG|6DrP(>agM<#f)ca|xXb=v<^6 z`CWj}~oJHHY?HZD*>qw$$q?Qpo{>(E&OdZAI^WaD>3l{<#b1uSPv=wN zn=j+%biSeU1)Z--kj|IlGTZsOvgv%QuJ49iKhP0*r}HD7pXmHT=V$SnoYDv?GM(S( z{7L6`CI2zNb^4c%f7|8$C7yzKJmQIn#}`*zekPERs-9R{fLS7*n0ON6$%wTD7{ZAD z6HiGDvC)6xsfkBPxMm}shIsnYCZ3jfx&f}p43;w!@ruMV6E8qK3-KK4ot1dDicdVd zEo@F=)&F=d<(L*gJeqjEl0!VN%_)t*+6xjdMZ6I4qQt8IQqLmRyBP5j#G?NdQjWyt z-+vJ=O)P>>ybSTO|K%*N_zD8b(kl_KPP}r(Azp=eRVAqYn{!)(czxnEiPurrTEuHt z;W}Mc$MuGg4HVgsST#T1$ezO{!YS_oS$8wymx(tgK8tt@;=PHtB;H8_w<6w}cst^4 zbh@oXX&~_!;vI;$H;5^3N1K0VTHQ`BEE%K^#$ZP;Z0SCvH}&R8hnsahtd$pgGuxxKnutOk!yP#Ho&5%gl&>AkK-uBrb?Q zQ*U2KZ2?mG=Q{nO9BtHB#47l)=s)o{L#s#&ApYJmeVL6k%MH_6Pz|B#F#{+DE8lJQ7H^GU|n(WFv)LXwH9K%GuPGC7IpKgnc* zS2>d@NTw#4l4Pnu0Rj0)t9QgJdC+Mb*2oj*C>WYA;5zILQ*F zEg@!!rRYvXvNY+OB+HOIMY1f(F(k{8Y)7&@$%Z5=kgP?rBFX9`E0L^1qWW(#tV*() zslgy?$P!ZFn$=n)Ym@FI(E6HwV7p9UuNXDvb zPZDVa124(mB>Rx;Ye2K>{Yef|zO(?611mns!6ZkL970mQ@IRE~u>VF$BN)njl*S%i zfh5P0l)E^Nb`7~z$J;FV4xQdvj`n`Io8%Fadq^H6xtHXACEO$y~O8f2y1$|B{YJI=)N?S0|l-bQI}?q*IVi zL^>(y#De;1teCt zuNfB7QS@I|T$FSL(#1%ZAzhqwDbgiKmmCR^wU(Bt;V(qvNcFQw~|Zb)kNKQ;QVoQ-tcSau|} zZA!Wg>1L#&`J~zc(k&!UbxWsPDZcg42}lbd-A>0b6;8SX>2ahxlI~Bs6X~9$JCp9F zoLxwFEe*@uUBNvB(N#$IBHf2{tm1nQaGgpQAl=Uva{%e#qz957qPTX1^x&a$I8^b& zEdL17qe+icP{iNj$0%~FAf|@nNzW%ef%J6J6G=}YRsEOMPqv&>D?aII7CD3T9MUsM z&ngkpaTTui*>Hnw36$3Bnl{WL$ zq;Ha5L;3{iwWPO@UZ>>iNpDi)2GSc#L-=x6+$^?ENpB^+m-IH$yGXSiq<4_sX~d%KdJs)kUmiDs3ed+WHUcP`WWe>gDCYrK2-mcq)(B)O!_qGbEMBy zOj7+3K=%GT>5HT<{5Qi(GBx+)E2OWIzOI>Hv)~&;gttgPC4HN;LHZ8q$E5F)en9%3 zhN%9VR3A!|)c=vq^9gB95r=e0|5ML0>z3)0rld{M4rxHzCJjmT;a_v=nMV>eq8_nk zPHcuQX-?X+nKLm=VFhX5#LAg`M*1V^=cHegexXUe)bT6fXcXx;q~9s{txaO|pY#Vo zQ|JCw;8_K5QpQ`wq{D0FOPx=3l{wvI?)b99nClI`ADp7mF zYS(lprrV@D3EhL~PD*zrx|7kJo$lmxr=vRs-BEN^{JT?W;E4X~6dkn%bf+!ta#6a| z)16uI8FZYH?o8q;Kjj{~s{dWlf4Z{?XzHAU?qYQ3q`MH^x#-SEcW%0)l{Sy%%q#qn zkooB@KzBj$s$eQv#b1&yqSHkyKHbIXE=P9>x=YhtQb6G>C5GMrbeEyKY(=(SX#sRs z&{0}|?rvqe+t6Kw?k03srMouW)s(P0-8Jco_*c~`xR$Ma9l9IPU01>N=&JbZ#w}q( zx*O5mSi(p4vZ+j^hRx`1PIpVXD*mRDt>|togffpg!)@vAL3ca4yU-m&cSnugUdJ6Q zXD11foI8sl*Gu(Z5bX%v-7RxZy8F}Ji|#&j$J(g9E3aly{qOEq2?qPIKr+YZv6X+g6_gK0|(v@d^x^5Ao4HIU(mh4Nljxo- zcy)}DL0SM^`~2TMgYMaM&s1=nFvWY87_#eg=$=nk^q=l|l~?f#=w3wE=)WQt)4imM zvay%Zy^-$abg$9yE9jO9uTuL;%eh(%v(~lhQvL5!bRVO84_(oAy7$t(kM09%-(NA+eo$<4bPv;gM5e;m79i*FINhh| zKB3@~*87wg@@;)a@n>~>t^(D5f$rOMU!?mw-Io-3neMA}UlC6EF*oFEl}+~z<-A#W z>Du={-FN6Zbl;`>ffBR@bl>iML~ptei5PFLE2asp^0kiNR3P2&=>DY0_jG@t`(uUMb$_P&t9pN_5Vh@#k?!yGCZ+oa-G3DS zlkQ&r)AEq(|IJ}NX~ib&8PVM|HT)iw-CKW)g>)}o_YU6Z!w)NPHzbbDK}nz%6qA| z6up(zwKTnD=&9QGmQ`dqTf+)EU6I~O6=LyK=&hlyRq3r(8fvd@y=&52hu&HWt}R|Y zZJn-5Z#{bd(SLdy(mR>nM)dZew=un)>1{%9TY8()+k)O^8o2o&54|nvZB1{hA!Hk| zbs>7&(c7W4>5b8G`=QmfBlNTdm>Xah77?0W|VWg zV936R-o?7yCG;*G;H5$Da(Y*(>k4}RpBh)1wJN>sNeiHNO%+A&I(m20yPn={^lqSc zGrb#?aFdBLSL7B2Z?#dk>+}vC@1%Fve`~mh-b3{6RquWD9?-&u^uMS2FV#M*oJZ(A zM$d@9B9GI1;=ehcqF)~1)8rS^dxq=G=X))BZF(K$M3xiNGf(~&>C(&T^^}%Xpp25a z(6Mh9{fyoZ^ggHe6}>OirTVXB)BBpKC&=JoGPB>fY(lch$R;8a z*(aOWlqB|~CW+XSt5@`2a%NMJO+z-dOvO8jOdkHt31rif%}h2O*^Fet(kkZf+Uc@><8Y_xDjmYa`kelq+1zq&WFg_JDf zuf`%3pKLL*r4?CR$0f*?B-1DVGSI{>L$)H>vSiu?vgK^7=)bjBB3p$_T82edt&DOc zTb=AYvNg!YlC4R$4cS^`8Y(cga*_KsEg_D_|0?4){+m&oPvYp7rkZBjljQ*2}_*a2s`tUES?=nb5wj0^* zWP6qf*&c$+ihG%Y#on9jNV0v%4kg={OqD;|Px(gw$qpntnCu`4FF)pZ4;iu#BQyF> zc0`4f9YuBu+0kStk{v^KJlU~iD*l?m<`MlbZL*U}gY4v?w5O7dBRh@k40WAuLq_zU z>@2c#)O&X2Rr}m33EBB%H@Kp~l&1Qh-9dJz@JGJRcauFx zb`RNoN|P3#*Xw?=2gLr*xjm$uhwXBYl08ZGn1YWBS&Do@47tirkv&WHw8fth!(7Mb z$eyq85+Qq$y!>vyMD{h=%VYuBD`XDYt7LDJy;d^GUMG8t>W!eABdr+r}#%?ACrAzV$G?#WUBL7O*tN!h`)TKHWhy)&DFb%d5;be_sPXB~!uAJ|p{lgdppFsf4fW>fex0NcJt+ zUu55r{YLgZ*)L>2kg4WpKMvLK^N{_k=8+qz1j&Ba=^rwcRsOX2-{j+w$qxmJ|6Ac= z=i}>G8WRkG6Om6xJ~8=J7a?ENoMCnA<|_XA5=vXr#%dQ3{xalikS|NV61j*!xi*4)1@aY5 zo-(sZwKDlCxfqgNN zNxljBrsSKGTm3Jue!j(kL%tRHq2ybW?@7K5`A+29mR|Dh$hRjSBTTd64&*BSWqD=` zJCpCGWYK@}T`Q*AyOXQsV;pE4YA3=UJ`H{*zN@7RCk0C#nT=l=Y6(#lr@>9uABp2Bymlj}`JEgM8 zPa{|T&rct^hqVPrhO@}e*VwbkwGrg!lH2G1k!%+z=R)#}ByIVTbGU?}EZ|a#^8UY! z{3G(q$sZ!Wg8Vk}GWqr7SCU^tuHv6xErI5=MgPkWxwHU1ha1RmR^&!<6@P>4!+(Bj z#aHI-Xmntv$%N2+GRq}VqUn75u{B`m-$=?{s zU;^JR5psF>w`t!~L*68Jm02TikbC6j&Htc&a{K-# z4iRwT59C()&B^>s{yX_E1rMOE9s6ys5hZ(^&=h3G%UgjEu?C#INOjY%jbrI>8sssbsdpqP?ks{iI0MX??Q z6bn&ILovH%n3iHXiWw=Umn5>#3{^IYnJ8wZn3+P9U$$@RnXMuyc@BzsDCQJIV&^J3 z6juL>(F)E>u>i$<6!QyBlgM|oSg?xHkcBB$pjd=r35rEEYO#t;vAA7#Ns47CMEoh1 z9>nT&S&HQ-MEp&DDPu*7RVh}gm=r53bCrriu^PqN6suFLNwLNtkYcSNdmXW5IrIEa zu|CCt6dO=%L$M*n<`km;6dO})N}&(`=9Gr?zfk=b+LjbsQEY9BER)MQY)i2x#dZ`s zQ;eb5K@)B-OUo{Hq}ZvlWfcA{6xs!fT`gyK3KjoyX|wuX6e9Q(V|CnHE}u;IrP!ZB z9{%Mc`BndoeGtXr6bCC)TY!Wds#E*>-{J_0qZQE>P#iVb3&k-M$Exc%isMT|T&A8A zDSo9miQ;jJlPPYbIECT@ic=}hq&Q8ZPS;TyfsGnRaW2JK6lYf;h3LQao~L|i4c2=h z#g!BnQCzC7izzM{@?J)91;ynRxxy(16<$SgJ;l`&*HT;~-of|1Q2m#azhNlbO%(c& zU))S_i_Io2fZ{fp%GusQ@gT*W6!%cvWjS}-`tPNSN;RWmbD(Dc!c8NDpfgB zJX(1v9uq@2Pf)lNPg1-@@f5{#N_(2(88x02nx4N-pQm_1jTZ+v#mf}$QoKU(y1HJ~ z@wJLT@dm|P6mJgk-=-K5f35jFijOJYrx4|*_+V&7`}^PG6LmR~$DB-!BB$^uIuvz^ z7Da=isWjhm0*cUNGj~y22~kB*JErKWkx--qT#+6{Hb5u}if<|U6kkw?{!@HL@wp+G z{9jUhP4Sh0<;Q$wq!;K;zoYn(;`?$+@xy?i)1N4Qrud~|RwKp#=&wQX8~vFmey3jw z^&b@fP>B9h{H5dHLN@vTr9T1v@#tIqFKK=2?N3O5V)_#e_!8cq#KiU|qYr&;3jHbQ zPo>@|t#@krqbl1X)6k!uzCQm;9`jeA8Z`s`83$zgGt*y~{w(xI)1Q_8T=Zw7KZi1B zAGy|j`~JT_x4PyT$}lhe1?bPG_)rUwb)^N+U#QAMe-Zl2(_fVS()1Ujza;&|=`UeY zRoAF5`fvHmX!x@9<>B9aVaxAbe+Bxh(qECjYJOi^fZ!_rgYR{JH4R@~Vz>E;{+jgn zqQ4gXt?92#e?$7~&|jav{y5NIZ)6Fn+58khe+pUJ1Y&>u(td-`Y5 zFJEq-P5&19=g_~B{<-uoqkkU#i|LZ@{1^_)K4(=*bZ zmhIhp8M(Yd7`ejXPX9-)V&n!!u4d#~My@elSJHKiTt7e+w1SF!G$?GxEIK)QgO~%*acFB$dI)m~R0X zd5w|R8F`Zt)qf*~BX14(jJ(6hhm5?df$!<~J|ofvq!@e8f5gb=jC{<(N`h5gKk(|@@ZzcKPBBfo35 zKZZg^6sa*%AAnkeuXw;n%!t*0Mk2Edbv1NMOcWz6YI87>Qmcftl8(RBn=z6zQb~QG z)2fWF;k(o5F`}|RA}v5bdlY|D8=sMXsEtEyEQzg+P0b0~V2`zN)is`pr8WVzNvTap zO=Z6}kkO zQvS^1tzOl&tIev&YzCn=yTj+Cwk)-|s4YfqZfdIYHEjX4d8y53_?lq>Y70|aQ1dKg z!qr|x$3+FPYb~zG64aJfV@VyQ1!x{^0p>hw%Te2y+Va%aqP7CHRjI8=ZDr-JzXLF*LT@A)agb;u1%~ZL#Q1p$lzYB9Zv07YDcK| zNNPt@leYsVn}Wx<%%cC)jyGOvCphCIYUfcqnc7*@PN8->wNt5`X1tDbMrBYta||fc zvlTo?$8+5(=Tp0k+6B}urgovaE|MsF|BL=pyHpSbsa;O(Dr#3KUfsaER!t%;fSSGquo*=Et8CP6r*;=L(SK@p3TSa{ z6SaHHRK5366RD?mKeY$ccu>66>XPSSYL8KSMDa%jw|O2{d6f9<{fry-V$#f!Aew zUpXHPaB3e>AB)<@)PAM*3AJyO@F}&=sC`N8bHk+OJ_V9uNjd_YQIy9sQp2$PVG->_M2ZN*IdmWwLp=f-~X?L?*56X zHL0oi*Hrw+oKn>SQd!R4AsMwUHF*m_P4r(4*9U7QwNYw41y%gV1pY;>(*J)Xq}q|W zg7vYf&q4kFs83FP9O@HDV0~O2MgOUf@0b%(pG1*~bey;vooiC+lMPL$pguiys86HJ zDXC9IeQHZEyQohqQ^`M_OELrXS*g!RU1XoS`~1H?i(ytY>Q4XbvkNH5oYa@0J{R?c zsn1P)KI-!rKJ|HB=J~0s?AP7%e|;enUX9cjp}r*bMX4`NeK8ZOnU}D3)#d9V{?w%% zxSY#UUs1v3s4s7r)ZO!ceI@FvQD2$*s>=D-Ux6vII`uV7l&-ZF-h$NErv57Rb*NuQ zeO>BDQD2Yx&eYeZzBTm?sBcDnL+YDQ--!CgrV>da=dh_UH2LP#Mf0hIYKamHOV)ccZ>1_1&qvFMn+fWAvZ;KGgT8 zzAyFtY)e5nL;Y0h$5I!y zr+%D{t_9Rjq<*p@C%Fu#NCun#H0oziKYa)}Q^{vhAM?#`6-fPD>X%VJkNSm5IA2Hm z`#;n#qJD`Y7rRwd|LsrK<D@~#_Z);1*HYJBri~Zk-Eq}^_Lu|5C8UR zzD7Nz{yOzPslP$}YwB-Ouf+T<>hDv3o4P*s*R=)M6MN6x37Yc*>L1E-x+3+DseeZO z6N6Bf_X1k^=hVNfZ0c73sf+kK?>E$cp#H5ARQ&7T8Z0S0MG8j&&V9p~*=G)K%*1A@xXIvAC?)>Ob|Sy7c$|B~=@5I_eqT zc+_+1qtpxPrE)qt+P?y$uKHhB{kMnq7haX&Z@jUT`Ola$^oBkK^2Wgv@wZpX8y{~n zya^=4n-FgjyovB8HeNf5Yf=+}H#y#vcvC2!p*&OJX)o}!3sj2gS^byO@TSL`3vUKI zk$Sut@n%v(8iA{1R=hdzoc?>Wo1Z4UIfXNZHn#@OgEueU{CGpp|K0)vCf-7L*W)dW zcOc#(c$?rYinkixVt6azEsnPg-V%6A;Vn6oT=ieq!dn(^1-#|(mjC}wW5uDfT^Vl` zvo4+X!z1ybT9u?vBNF0lZD|cE#Ha zZ(F?0@kH(Mw!o7{Fo?q2TJdd6g?QWH?S!{I-VS(U#9ui(4n^&($S!Wt-SGCt+g&ot zDtqAVi8tmq|0^1vKKy(8;_Z*OpD^|3UHJ!?Dc(VNr{f)rcRb!9ct_xAJMaz@f@F63 z?;VME4Bk-=KiXAttkOjMbltAc=q>y@Gir!HSo@&15e*ee2 z7VkQf*^GEM;QfGiBi_q+H{m^icQf8Sc(>r)hNn%z6Y+QFa68_ec=G)3kh}2iwo{`3 z-o4cn?>+&=xZim39>jYJ?;*U$@gBw#*~fci=z7_||H6C1#Xjj`pT-ll$9o1(#9v-= z-#(A`qT(+M<#GD&y@K~X-m7?T;Js#|@Lm@~uHc&*_!i!~cyHsqGq`r@eb4aK{s8ZD zybtj{!TZSN`FOy``xNgplU8$nf%h%mmv~>}4e7u4jm;^Qi~cM5dy@z6NBptye!`3J ze#RTY`vvcJ<@}2GZ~gZ~|MC8mB$BO$=PRQ6?|DO~5#WV}ri2);;y3VGI!*9I{9O$x zUXEAkzx&M}y{5`63=OY~CxVZs9l`6l*ipQ{75__^rtNzFSg$`e{^a=ohd(j?IQZk^ zi~i%w!@uLG{`(W+Pc#6XYZ81BfBebBrTOuvz@HHx{ORzg#GhITQ`x2cY4BD2jUZH~ z*pXTqNye`fqy@n;dQxrcq#e{0X-qULnoxhX!zpNHnf`12A4`127?k3T=b zGWZMNKZd^`{*m|#;ct(>F#hWJi{LMhzbO7v_>18$fxoz2(VUgPq^o>s{ADW_{xWXG z&0L3;ZGRmkPJW-&RZAW~jpL9REM~2jTC4zc>Dl z_`Bingue^Ei2o3OS6ANd_ z;fwwct#vs55rWtQISRkJvPa{eihqm-9*chx{&Dyx;2%GT#TW4(no0}6KgH!a4gW0s z(-l0!F!9eceEhTV&r_GQ0DS2PdT8h4Ux_!uge>47F__yHShA;ZBv9<-^->%a; z@b5HyGveQk{{a3y`1dKnKL4xj^xuCF{}KF$@E;zIRnDVQhV1Tf`~v?8{O|Ce#D5$A zDg4*)pT>U){~7$}@t?()USPK%Q7_=XXfjw(&husbSMXo8Og$N0>vjA$@ZZ9JQ(PvG zJ-2u8tDoz4mG&O~hxqT~e_%Pv#JBoiErkCG{+IZl;(w0+*&rMK7lRP|ukgRY|9ar9 z41D`7F#h-WHT)m&^~v9_TEI_+iT|@0vb$gLRqcIg0rdlsdy4z` zA$~CMDj2ytvw`1IMBW16H_hqcr}!Cudk}@6i*3)RLr}?VmtcJSlAsFg;s1l*#~01V z9~~k~FR;r6V-bukQ$+~IsSJW~4MJdB0Ko(VBJTtf5==xe3Bkm|8C<)-{{0uhOcAI5vhj^GG_n76cm*Y)Y^p!Nvp|4JF)U$llE4A=uo66KqMa9l=%v+f)d_)4!5)H$cTb1!?T~%MsD2^>(SL&d z2@WARfZ!mV9_Us-*zn!-P=dn<4wr0IdA7nM2`(i#ir`FwqX|wTIEFw3pWs-6<0OM+ zo}i%WzeP?aIE~;GvkJkfj;Z<|oMG?^Bsh!U0)n$O!#M=QwZf z;9`PH3@)SGZA;1otTOc7i(y?jpET__h*#3sBio^SuNQ5!^@c0Kxr2u;=sO5MNt> ztp1205IjckG{NK5l;8=1r_|8re{+EZe}>>if@cYySFh~?1TRPuTggl6dU*(WmEau( zUn6*(;4OkTjF({O@4te#1(f>VCHRcsJ%SGj-givx0&?ab5qv`Mu_3!#@l&_Q&k4S& zTm;er2)=ZLuL-_!oNsNc5WXk)o8SimkKjjwKM8&!_?6&i;RxXulR@p@2!1E{!{l+< zM$}c)u`ZxJZJ!_~2nd=4Awf(KRUCQA9vcLSVLE<`KxCgFH5|1w$1e!_1l9IS#k)fs zeg2n|QSp}y(hGEze+VZf9E)%~i3-OitVWT2LTLfAw5c{6U%?3oCnlVba3X^n4&fx0 zto0L4MmRa)RD`PkA%s)@n?E(-w3=|5K_H>i|8NGvzX@j~ypnJx!W{@_CR~?r7Q!V7 zXC<7Ua5lnu2xljpi*OFYf9roZ_aLpVGOv#F8IW)R!i5!CP{)Pb9v2~0*$>_Ce};<_ zE+J8aJ3L&9aAm@!36~>WM#GmCf<2|>30EXsK@bHAMgN_>3gH@r+6cnc2v`62nXE~; zcEu!I%kkG4id~OzWA(02s1N_b)b|3RZ2^Rv5N=JlDd84`qW^>{{$tA9l5i`NT)o@q zxGkZ|erTWntEve9<94(o;ZcM;5$;F0GvQu@yAbZKfx8k)Q;?U0IQUmgr^aT>=Q~0a9cjp*o0>jo=bSnz@^Odoc994iwQ;l z6~D;gmk{a$e|V|lmpNSYpYXpj)wKw(B7BSRYQp;nuOXBtd_vKG!s~RD7C?A|E9@r1 z+Z4H(@D??0CA9zYo8#P0c$d2FAXNRg`@Ng+UP5UQ_E>BU_Y*!t_yFM(gbxym+7mvc zqx<|nd{n285k78XHK&445^5s|pRT6zlGA>c@HN8c2wxWNBAM3)Bo@TVcJ_r-vUU~Cxl-ReyXWH zBmCTCGrJ)CQgLYq7MB&jQSe*B?}or12pfby68=f}6XCCfPXEJS?3qaHZ-l=S{xJyD z%0~!2LeYQCTsK}qpD-c}2*W`J<;RApc0!mFHZ`zCsQMqKhEJFcF$=;zVTVxlKOEBk zuqU)i|3jz$q0|5HAEIN3#v)pZXl$Yxi2jdgDxz_SCM6n|XdV%_-#Srf#wyJ0{olZ`K8dDftZQBKirq<~+)u_g_MAH#XKVWL+8HpAknu%ymqM3&N^Tc>05wk4ucTQMO1y@Bl=G?Pc;rPMgNKBcgzKe7A0CpID#*%<03MZeMuuw zWO1S;i1gvVx>wEZ8ZAwh}I#JMqogqbq8K0tWPBRPqZPC{moCu+=OU%qD_gmBif8;OCqcPL|Zt{ zRzxcM(bfjhRPOmd+MZ}9qW=)>NVJ0xs@I_RMLQGiO0>%$P-C?P$iDUC&;O$%iHS4pZp!?La9MdiRfaYONlO#sZFKguT!Ech^`^34(ckRD~C8&582leT~8$9Z!%N{ z(G6xwbQ96NL^l)NNpuU*ZA7<JamFq7R7PAbOYRO`^An-Wu}0GZg-w!HM2CAkl{o5&b9nSf-WkMV}J= zNc0)ew?v;4eMR(z623HiSI^f9+IInJOA8?SUdJCC?I)rd(a%JG5dA{*8_};7!Fhil zvi}rYGK?6INX1_ePjTPjA&siAi1-Vln7H~mY7j3>ln_r%)FiG1xkc0?N{Ol+wTW_~ z%!JD*IfwrKD-!)DDqU55qJI<_CHjl#ZwWC!T-DWy#}ZdOHn9WMOFS;|#OfN4czj~f zeBudg&Um6h65>gSCs*&JI@-SiBc6hIN@8gQ@-p2yp2}sIhIk(0X^H0`o{o5C;^~QJ z)C@BSUuv7l#)>@)@odDi8kfO|XLs4=bjV!9qW=z`x3Y;<{NwqF7u4wjhCsZ~5OWdY zO^6pIUWIru;uVM&Ctikl3F4(R%5?!rxU|bJ&;P{B5v%ySQ&n(99akb&@wYo#m3STE z)reL9Q5S_N=ZY zzESf_3n0E;#~Vx_@lC|H6W>hyKjK@6Rs7xkMtqylY#z~nVtxL%$lb&*5#K}n1o6GZ z4-(&}ocm1_@dK{5hln2~7X2rdw*&IBKe^HZh#xly@sq^Q5kF-(#7`4HL;S4CBcR>v z^TeY6#47%_o|lQ=BYuVW4dPc_hS!K+9}1L*f8w`@-ywe6a9qxJ4UPDH;!lX>;h$La zpZFtU_sy>@;8PPz{2B4*#;)=Ze@SCc;;(4TPW&}-m-rjvfcRVD--y2>{+alD;vY5b z4-#n4;ithKiGLyfbtvcW#D5b1F@%f|d&D(j75^%OxnxqR>c9N_hQt|hM4S@G#7*J` z@xMR+iCZ?Ot)VSbyTQD&i3{S+(7Gj!DTsSC#wYI6sN{W=_#fiGh*kexB{aqw6V>=X z8spL!XOLVnH^#FIH71}jF%4-1irY_tXiP$5G8!WO@-kI5CU*ujW}-1AjcI61rGZlq zm^7xPF$0b1X#D&6zafoaDBH|5X3^MLY0PGEyU-jo)}b*cjiqSJMPnfvbJLighCKh% zn3sl#zbVF*v;Ylh1a7)8jm4F`2#rN)EM{GUE7e$n#*zYR2#uv_tVClO8lw3$mZc%j z|IWLDf+GI%s;+NiWg4r|SVi$wEneM$jn!#r7ig^EDp`w$ReqrfXI&cqp|Ku~&1kGo zV`CZ{Xr2veY$P0a9TnU}$4w1LV{;nY(%6E=Ry4L0vdy_Q4foBjJ;UuZQ1#y;J1DXv zjooPML_;3?Y3yt=sJ*MyZ0^R!?lhzwxLxc;<3<{L(>RUBJ~WP?u`dmgdK&xD*k71p zA7Dag97N+#MGn^S5R*sk!*o2n8uc`eq;WEhqi7sUL&TrPF~+6#aWqa)<9GwoIFW|^ z&Cem4zAtFF&;J{z)3}(%88pt(*fVuJi^ka!V%I&F#s!L>N8|hfuE>QtUL>GguS;nB zSCLC;$n!sq%V}I;cVy4@N*dSDxJp8Vpe;b|lWS>QuZZZsW>fLE_DwXNqH!~g`)J%k z<1S_1O5=Yt?x1lSjoa-i_M)i%+ZFFt@;#DPR=igXsrG&vD)o&AXgsK{hm1?@M`(!J z(|DAIh`-5C;|Z|^f6^gO(|AphXJ|Z2<0Tr;(RhKz^M)xjSx&zNmcW;l{0a^G$&b*4 z@H&kTXuLr~1fRy6G~OCypz#ik_Y{BEtgH6>#-{P1PCugY35|~>%I^JB8lMfOy2=+M z)qcMuseW?5A{mRu*EB*J-_ZDt#~-(b7^P8~C>lK)eX+NaC>nq1C@p}7yeY87Bx94zMDl+mlZq=Dhh$umiAcsHnSf;c z0aLvbx~PeDsvrKC?I)9wOi41i@FmX_B<}gYy1vO&B-4^u{U@15Xo62iGK2D`cgT!l zSntdv^O4L#G8f6LBy*5R3m}=@5Db&VeG4G2xk*(26M6o3)y_|{1jzyo!1rtuPq=HN7xHQQ!mT7mr9LWJB%ad$MvI5DvBrB4vNwN~jY9uR@ ztV$yKKSr)?;Od%i4RKjyEk)MWah;)h)+1S;WFr#Q|71f6(S#)O{7uS>|X(p zoJ(>(i9Y|2SywtjwFJpUB-fK%OmY>;B_x;YLYL}znXBOnk}FB1HJG&wuAHk$u2JJ! z607_|lgu}e+(~jH$!#Pzk=&xRn_bRZN&aW^jH&8&k~<{aX1I&wJ`&acah3;jUyqogt#oBT}j z8_6$%$SOnnpZu=KAHtL?I6`x5k{XH1Z&D}mNMaJ7BqUM&A9L;O-~W;{NJREY?7IMx z7D+10XJY(qd6JPacE8; z-sZS8$5UgB{?nXLk%?$dqQ=B_p{6trc~!e^PEK1fVC(~5t!N18LzoXKQ!`DdZI1grab@K0_@&*peY?h zV|NNIDF(>Snu?R&}bE(Hy0D zIn57gUP1F|n$^X&Fg5&!#_>c|K_!l$L{WWvBh~E=AAU}p?R0%-0jZxUWeT0kOyc!PP5YgM`+6PKh1{?#})Iaf{zI( zH9TRwG*$nbPdWS{xNd`XSxb$o%Q(|^0cmubEtfwG*m0L}b5&39 z{ihikTcr!Z5R9Sv#I%+$yorx3&bSaoTZ>g_pi-?{#xwHVF6X+iTJ zTI10Y{iijyj#^%89JR+au~JoQd|H#x(x%Xw(BQNtqBXJDgP+irzISL%rs0#*nqnx! zl(gocH5ILyX-!RQdRo&cZCV|t6XuvaGblJCt(gWmty#pDQfH+#n;NqlL@S(=)`AMo zMQd(a^U<>UPs{%OuX^X#aRCW5XVqFrk%eh3qQ;`)s$P|LwHBwfCaooCtxRi4TFWV6 zDO#fcYA-`;S+U1dzC5iJ)U~4HtYm+PTB|r@Ra&blXLTLd5ZwGwwAP}v39YpiUx(HP zYOG63#b5Tm{?J;|0%&cdP-9DjR5V&!JMT8MwpH(Tg4hH3 z59!9VcA)h!tsQAyPHQJxhtb-Z)_$~hp|uySU1{x3Yqvp^CXtVTXze)wY3)sGADIfi z?@;CY)6%BUI*``EvbAON$VKRChr1h9X*uuSjCT% zD7khg&^m?Ii3*-X>*RmuJeAhzv`!PU@|AXm$wuoeTIbO^+jwc6qh6=~t@CMJLhAxr zBKx#16q*!su^74w#V^(IGUvU5))TZU+TFCSq;(^$t7u(E>uOrpIL@`kkWn&A3!rs_ z0cqVt>o!_9)4EmhTLia<=JdaHJFPp_d&khp+~xLl53L7j-K&KAXgxsdew(B^e|z;+ z|632!dX&~9;;mk?yT@qh!+*7+Wj;ykby`o+dV$u{w4SB)%z$4Rw4T%PdBa!xMOrV> zdWF`@117CkX}vb!=(T%;);r37la|x}*4q*ymAp&q16rd0%5k6nv_5pmNA6fYA+1#C zQ(8H#&uINd>vLM)(fWec*BYyRq4kvnO6G4|2I(D&d{0XRpO&-$T0a_G?VoA=LhDzH z*faT^R)f|bv^-jW(yGytreHXMkRxU|E1&KCIjhMq!W;iO*$^AmRfOAX#tKfp77K0 z1*v|r(g{f?A)QF3f=?_)b$Y3YzasAY-*gJnB}pNjmvl}(rHPjG5Ixi zI@0L}Q%y1>>CB|6|2F?Dq_di}?Db7&C!I^lbLcpy$v`@{PF4TSX{Ym%E=oE-=|ZF` z{!;mZCL8I($`}2&HHddH(!~|m=YMm~=~AR3h-R-J0mXUYAWsA0*wB z^jOl(NcSM!oU{`2El9T^wfaxGRmCUW+J&qBr`wsFq}!X!q&txAqRbshcT!_#!*PMT zD!3cz?iQDOV^7k9NcSS$k92P(>|?y7`-)*}-k((UKRs{=Jec$_4LOALP!m=0Ne?GI zO7SCf)VBaO&(Vq;&F<(p%KH*>R*1$jja~w~^jXdWZ2=^^;03a2vUs^d8dt zNJanc9%V&o0i^o(L1pT4W%_TPUX z{ebjW(ho_$BmIc<3(}8CKO_Bw)c)qb$xr&ZB)9p$B>jf;E7GqG;&3be)s*ym(x24$ zf%L}#jr3=+h4703Nq-~tNPj1-DgFoPpQI}OLq|kvTL7uAw16~HBXkw&^S`~l6WSA# zHc9^`ZIM=|mnykUnyVpi0rad2F|6Gs?UTy$fAu2O-~YGvs3Lzk=0CJW=V^~cTb}>b zc6r+4(w;z(@o1~~o2uFqDmanw&5hTdg!c5bC#5|#?a63Edvftg<|zz~_LMrEN~Y#O z#5)b`X%(MtfYY9V_FS}Qq&*95(SO=A4|!*$J-dRl8IblIw5{?FW!4tZo`?3lL$ULd zwP-IuR&8xT+LzN_i1wDW7pA>B?L}xWLwix$OVD0Smk|B8*QLFrB1;J(CFxs$>Mm_B zOM7M7%PF`#ZF%gcy~0o>(hKCyZ?B@RRdrlVKzp8R(B6Rdnu@PQdtEiwrfv1VqS0PY z_>y^jF$CFAryJ4UjP}NAZ$f)hyY841-dtTZn_PK+cv{nD@UM{44iDtNn_QfWNVbZ>o z_GJTv_7$|>p+Bed^n)Y?HuhAqb{<^MCucv*3$)>g4MEf?{H`5l` zr+tgt;QxeU>$#owowT(DI8bBn){uK>->1fy7C>9|zx{woLi-`w&(eOF_LH<9QSzg- zA6Mfs$9cjS3O*&a)blj$XN;{YK1cgC+RxKgsc*kP`$gI>385<0R{M$uzG^{9^132# z&=%RJ{ie9&XXkA(G?wUXWv=ak5PD>2gSDSWD+lqe$(k=!}+FjbCv_=1E z_jK$JdH*6CoA%#||3fyGDcC5vfSJ~ljU!0)6OoNab_m({WXqFHKsFoMgk&P)WD}81 zOg0(WBs!h68twM8$;nV~iXl*1fYhH&O*XxHry*1Q&!!uq%|JFY*^EkLAI6RTe_&N zhrHXWYdbRS0-4kQO!VK-$aW&zlWb?Q-N<$^IGO$TA2fV-vOO$cuJ2xC`;+ZWwlCQ} z7MFWTT7x^T1IP{{Q}NgBkg5LLeH}{n0NG(=7m^)Lc0Ab;y3mni$Ea}>nd-mgA8S@2 zJ5CH)>jbjX$xb9YMfoR@ooqPjJypTehLAJJ&LKNf@w3Rz7MCVh{<&o5tLr?2lU*Q& zUF#yUo5(IEyHYuqkX=f41=(d}mk*Mt>%T)$SCL&ycC|ssqy^|&*OA>ocKs0ZMzQT} zb~D*MWVevrR)J)^ZU*mGHcd_TT>@dx=bCKa;*t z1(K=$Tl;k~RsQS^je66qCHhbHj)Yj|dt~2{y-z0cPWA!Whh!gu4MQ8pT%S%`(zE{C2NXdGo<8Ik~VpDLuTZa&gA5? zlNIC>lXb|)ChL-ol9gok$)8O1-&R}czx%1YS2?Z=2!FmoIJxS7zMw(K z7bahld=c`+G-^?|uf@ri5RPuMT8?}vB`htV;^fPcuSUKc`HJdVo_q!C75+-(BKzdh z0$jnW|KeSpd>!&N$k!rYb3jnO{Vh=Pb;;K!U+>>u+XBcpB0rRTWAa_dHzD7id{gqR z$u}e4l6-UWEye_zpNM>`0YbhF`L^WS4G`UbKIFTR z?@7M9!O8b98`P-1blltV_a#4wd_VF7$oDsVT}$;}3se5V{$eUr2trk}o2^nEX<5c{?Edst@Lu4RR{y3LXEeqjUkK z_!Lk~Krso$gcK_NHpKn@PcbRQnWzBn4V%PifJm4VrrLvT8ilm$JHP=AoFMLK{J$;;-4N5DL}* zLiJy=EljZ?#Ud1|QY=cb6ooVbWiC#!1jUkLRfP5x?Kc#1fVvK(I7mQS=OGlwQyfZh z6vbf_BKs7Fo4rsRDNI|*(G>SAyY_$ke7|B z?vN{$aMcia4aE}_*HYX~aUI326xUPSq_i6-ZX9BY{!`o{h~}jDAH^LC-bQh|0d;z( zjzjui+(Yp&h3G%UeH0H;+)weqAjDPpkh>Pr4wU>T#bXqY|N9<(lHx6jrzl>gc$(rl zif0_({uLO-^As;?h8J9N75^%&T(4IsUZ>CoQHc1vb>GmCH%+!Gkm7Ac-l2G(;$4GN zyeEb|)ek5>q!8sdh(>+F-_^bJDZQ$U&*=U_@j0EU<}c_}KVM(cnTp~oimH;YDME^G zD1M{(mf~lM?Nxp4~iPapA_!--xgVyK&_C% z*Hpn!s)(XVq55Am)T{b$V_Os%MJjx`d~I8m*wO+h3USFqTteTu)7 zqbPp(UqxibNsN$5-{3yF6kIujdPy_3=r!KWkN z|I(RUTxP8fire4+q%$?0#pp~!XI?tf(wT+MbaZBLpGqX!IE1kLM z%tmJpI#&PfZPS_4Ma}J^=5fe;bQY>?I`iwefQ}2gz=d_Xh>nX^qr7Abi_=+|&Jv0* zNoP4aOVLr;?=0==S=Nx1vpk&@>8v1#W>9b?$6Q6HtI`p{r?VQJ)dw_1*3@w=1JYTC z&e?R9%>osCU?x5}n;wxA>WPiJ#UW%sfr9g%%H(gG?n zoo(pYfBC^7+tb-aIsc)v1D&1dSp9d&cXrHO>Fh~oH#&PLe|LjB+Fo?_p|iJub}g&_ zy6*mTj-_(|okQpxXgGAF1<-N7|JgZ|&QWv@qoexYIb3L!VsuphtD8#fqcueJ-`-}& z(K(&Y@pMG(>F7Ix&WWz7lj)qQ_$dZa`?P9wgfkR5lg?QJnts$dhtBX_(HYYJj!#EE^Pv;CkVryoB@Mb&@`O&GPLobS zr$r~DlhSEhn%R`pkh`erBuibZJCw?O3e*{;^N)J97j*tM>k8797C?7wiK;F~cO1GC zC^9bH@zfY!T&A|}gmfoSa3Z>@{}!KA!O4Va4xu{*-KFV5cOJS^(w%|sRCK3R+SGKX z5vGluPHd@RdWXzNcQ(2+(Vd0v%mb!!W;Ii~v(ueZkvU|=>M*-=(N*!U(%Q`P(p`w| zd=eu0=cl^>UH#2}EmETvrn>~)Md&W39QXN8cX1P?oF&z@lpuC@%g|ke?y_`OR@ZWL zm#4cTUDbcP`bsu~oa!pZrn@TL)#$En@(3uEuSs`Zx@$Sk+Lb|f9k+}1bh4e5&b z%S)m*62sQB3EfNRZc6t^x|`A6neOIvx1+lS-L2_vsToxKHCCtF(B0Ogl2KONp6-9> z?nqbO4w%&y-^s1A3*G(b?n-wry1UWcL%qAZI`@>Q>LvRX{inMR-F{-=>E29N z_21(EqkFsJx4CO{2iH*!DZb;Yu<(I8Z@;6-mCf#ZmExH-qR6y~z-L=kjY9Id9 zR`C~(_JXd{|L!Q|gmnL+tW^DPW&T4cnosFI|1T?hoC-1J$?i(k|5EgyQksJCQcgrU z1?9wwPeLiOPdVwB`b+okKa@~TOF1Rw)Ra@1a2bVfTL7i#KjriW*L7#4T$yqv%0(z= zrkqO&vrx`TIXmTSL(DlS=d=ZD<&<+%E=V~K<@}WMQo3(`&8=R_!@s;_cMBPta$%E! za#6}WUl1Yv@|Opw*Xe(GFy*0&9O70#Y$)&u%JV6Yq&$`KD9Yn0kET@F zFQo;z5ZeMMPoO-R@^-Sl*8Ha!KILhYXDTB4PkDymm12}QpkQ$9iYjD|c(`4px5{&&nCpQU`x=8^M!f$}xV7b#z+e97Wc z=PQ)2n*1`_6MLQV4NCX^L9 zObqdU?vO9(RXvE}_l`8(y$l$GrNVp1vR zH_MTF{-7LD@J|C$)+pV-|4`)-j!)U73@BsDP-wEEeG5P-;!l|v+-!%kMVUIL{rrbA zr#CKTLHQSDb<{l#lomi)y1>3pM@_7*{x`j`DgP0?ClCL2cRekmr!7E1dgIZXNNMBK z6aA+*q44#(=yYOwlc*uj|8~XR}=s|CKdQ;MyhTc@loLZQA4mzDyM`-~r zd}i{3nn%x$9R&1(z==cl&_y#?rr z?9*G&aTXRsSEsiqy~WilEkMqyXT@K^rRa&I(_5O}GW107=`E|{a@FYSUxD6=GPN02 zrnfe|Rp_ljZ&f9)MsIaP9y*6L>8&*sCHhZqT^-k>x4yYXZix-)ol0*bdi&GcnBLCx zHleo-y-n$DNpCZa+MJ$r1iO$uz^&+QEugJ!TY5Xt6aA;RJw2=ZZj~Js-^q~G-i6-Y z^me7U2ff`C*?q{nr`VEeFPC8-o$l-K{lt({J%HXZ^bVwV1igdk9jY{W3qa56zuJe< zJ6uAlm-zwg9ZByfbsaqf9!u{;dMf^s;dpu{45H|rr2Lb0RPnbpoJQ|jdZ*L7l-?Qi zE}(ZNy>sZDrOdM>gD$GmbLpK&@BDvXg$vbnk&YMByTl%~&3_raE9t5DOI24WP4wR# zj=m%4T}|(rA@DkS_tU$c-tF{mpm!_18|lfv`9SZcL4JDf``_OGBv$gA4*zj_Pbu>W9qs2o^q!{o zEInxo^0IfD{r!J>FEDx)y%*_Mn|g_U^&|E&y)M01=>16VReIG&^smu-kKXI_-lq44 zCV!LOTZ8>p20amfb=iOahu-`2K2qcZdLJ6EGCy`q_xnG+&**(i?{j)zDgO%{zZ9CS z_G^0I45sS+j-Keh+CLZ(=$>( zO7Ab_%k#gys#EQcMSnc{W78jp{+Pmq)*sh##-}f`Pk#cNzdsTEiH+A**q@aC6!a$( zP?+xdzYqOs=}$?2YQ?8=8K$w}mOmZ+=>;*z)t{06y!23t}ZQr{vvKKi_zbU{^ImErN0FI zmFX`@e_8rVDQ#&Tmoa(t440#??*jVEn+!@=k-jtwdC57iLVsQQtI}VC{%T5CeaO2e z{k0Wb%kkG4@~%gJL;CA0VS@p#(~anFOn(yrtD`eFbAL1XJJa8sz6yJP3;J8q-&*-w z2~+CXhW@t39*p$2r~e=ND*OE%TsGBzdtG+XB)ihzLk(>K{h=1n-_u3yP5*TI`_Mmz z{=W1NrN1Bj12t-Y9S?BKgLHZ@{X;5aunPqbqklO4Bh@}ayi)m5^p7^N4mp1~~mQ=wC+vO!^nlKa2jkN;q4`bA)CO_B=&w7oe~D z-@l0dC5m4>#Jtq4emVWC)q4f~|Eh5%{j2_6zvw^xYb9Ka>)diTFk0Q@H`4!&{!R2> zpno&{hv?rz|8DxX(!YcL|LEUN--^G<;KJ{uuljGV-97a0*ZlYDc%P8vJRi{MgJ!Ds z!}On`{|NoZ=|4(ex`X7jhwy}Qo*d#ot;jR<<*}c>{r*?&=iNEHNdF`HmHxj?|7H4b z(0_&gYsz`G8eQ_&#jf5p^xst1TQXHI{defUPyb!T_2GX^)CUTF=#qR){~P+B(EpPD zr}RIk|Cvc5qg43CU`k&*LjP-n(EpbH&-A~e|0DhH>AUZLZ4EyS0yWPs^hN(&?CHk4LqW>p-kN$}9(yuAsy$g^UeENa&%69=ui0Nna8}wT`P3TKgaNgAM+Xkec)9=zR z9Bvh$n$oXYK&AhE6YDbk#pvYp|7NrzXj2#+%f^n5ZF7!}!{~&Jj?3uyjE-l#Hhgpf z$C-%HNf^~%{xOx0PRi(H|5|Hw3Pz`A6h^0Jbjm7_(WwU67@daE=@^}MfVd@QV00EG z&&cRZjM{I0omcdqQE3VenS;^Y8J&~SRT!O%(M1`Zo6!Xsorlr+8J$=8^Zh@n&H~zX zqu0V=Cx%#G%FN8n%*@Pq%W%uw-ZHnZ%*@Qp%*@Qp@E79bS@KLyx>nXK&DNGiGj_I| zG(A`O79!p0hhk?muZe$m<{{3k(w);>_F14iyV-LnA%DMg=aTNchG+|r?mWJd`J}sm zbhQz9=7Q2)sIWa}5$UcX-9@FloOBnH?$Xj-T)In2cL_(+gxUz)yQaI0+6wyL|96+S z=?cjGNgs?yz1x~oZd9qFzv-L<5-Z`lJ3UR-Bh}&|3fRP{^wKaZXw-$q`Rebca!c`(%nhATT6F)>24$4QPQ>N zf4A;-F0-5NkWZz%qhHrrfFip{ch><^y1N&)bVo~f59#h@QLYO}cW?E&Qumeak<#5y zx`#-2f9cv|fA@f)nh&yA|NEcrp*B5Cx`&%FMpNmIRQ$btlypy&?$Odc&N#=|c&xAa zc$*H1fA=Kmo@(I9HoE@`EZzUJ>1p}sW6zN6c>pUGp=ebSiL0=n)~fOMad?laPTdcZW!vp(v1>Aq~p z3pVOU0O`Jzk5Hbf;eGBmsjL<8lYG)d1YsVg``vh^hENH(uz zV@Wo>WMfMegqmSV$yD$qTS~H} z6*SzCWhGl~Xu5)AYe}}EWUEQGl4Pq$wzA_FZ>VflojQAU$<~l;O;^K6&b2M`IySCb zcqLn3vfU)xK(g&5+fcHtB-==`%_ZAdvP~s3{kIH~Z8o&T7M5hoA!KW{buZgUwyk8N zbZVEpMcbDuC$wo`IpJaPTwvS|cO19S^r(}Ek zwEFO0;F8(Lf$RXuO!KpmzXBwgegv?!4wdX^$qtju^gkQp@gpR2zyFu)sG*!D{@JlP zBAK=WzwQar%il^TO7@6kCrNg_WG72@u4Jc3cA8|`4lG1lfUSGFWM@fshJj}mpxI~J zc#a~Dd7flfNOrzt7fW`5WEUC1egETEzeKXj48OF9GW+tvmh4K&^l4wRt8BcwxG~H& z{m;DqXE#W8yWuz5c#~u|OLnW-xA?Vg%cuI%_uw6p-7ndllHDVjiNCJmp8qAgw_r+k zpBnB`K9JjzJt)~jl8rq1+nGEn*=LeHCfO^JJuca^l06~WQ<7;r7|QUpWd8Zz-Qmwk z_Pk^-N%n$d|M~m>w${sj=~pFtU$WOEd&}_GC3{1%Hw$l(U$VC)dsnh|2Fn@KeF~85 z1IhG(Uoz_mnd-lPmwjURr+%%^B{KofzL4xo$-a~9E6Ki*>}w5iNAc~D{k>#AT81AS z=r})1)|KoR$^Mk=SIJcNC9~&$w|B4qS$;YGmh7*goc~DXl;5wY`fnMu1xTj-B6mrz zEWIVASCQUi(yK~uEa}yxmrAcLy-<1$={1$#3kts3Etj(wNzb}K&sso!SM=ILG%+%Y zXogM^W%k(88%KH*N^e~0jW50Nlw-R#?*u;oMADnY5c|IXie2|6_1?*)H<$FLklqZ^ zn^JnyN^dG7Pc6M^MiS~Cr!#!|0Vus0r8kT8?D@Ypr2oBHr8m3uW*cJ8A-y>V(|l>^ z%`Lr!q&JWB=C`!-+Bl!DY5|+7{(EF$=`Cj9A~r7S@x^Vr#1L~S>1`strKPu;^p=s{ z3PxB~ddr!yyfR19t|+~gq_>LnO#h2}rnl-4VRh+kAiXuDx32Wol-}CXTWiRx;;%1v zs_RK_eTV2CH!N)FZIm0*+t}BFsVIql^5~+oOn*p0xn2ZEqv&8z@`@tI5xdldY23k>0Kths|;8Dm);dNURe;NceV7cGsHSV z?^?H0WnORi4W4lPoFCN;djC8wy_cl-g!G=3-jmXM+Oj?6_*$+1 z`#-(sr1ygKp4UKE&x?g&AumhsHR-)lc%}F1kn43Lyip+1drNxXO7CsyeJZ_or1!q` z-ZjE|N^qG!klshqQ}Hh1DB`(#j+RsNYpeJ;KH4*WuTUplh8H@=qMH;VYvF!FcO z`(AoKNzcSzcc;A|Pb5KfOPsKdyG>?0;oA~EozvPNh+w%9T(yuAAsG;AGep~v1^g~^}Z@r-J^}in( z7)xKffIEu3@_wpQCY*B_sjo+laJE3=YKWklm6P$pI`bbN`C?AFE0HBrN4-A z7LxwLLm`VAsO`Ylu!QuNmj054FQvGvVHxQ!C;erIkmaSX9YF(&JF35u^jFUj>8~vP zRm@mb`u_JnIn!-?4Rft2{UQDDuOt0UrN6H9H?{vOibSNeMvOzH0>{k^5XkIUm~-cR}mOMidqA1M6;iiDnj z&|oV4L!^J`&~%LSkCp!6(myH(rGJEt?o)u-M@#=0<-1jmQ(KwG+vvK0^iPuhInqB_ z`e#Vr#J_*4^iMO+;HsJa+odu5OzEGM8)p0O|NG}k|8nV{Cw&!s>7OtC3kptNfb=ht z{-x5tSo$XZMJmNFQ;xgnS4jVA>0enyNniVdFW&UO@AO~#*GvBa>E9rI6Z!s)IaB&K z*?6<`Zz(d^y0=OH9_g$2OaBh(-zEJ!)$7jW?g7&X_u6=$^zV1LUfBnw|AO=%lKzwC zeOUUBNdIx^KPvsllxC@HttVWR?&~S(KWqG_rT@$TH{>}RtpzCaMd`mP{g(=k^k0_# zD{8w6Uz7fu(pT}fs5d^CKg|2Pul&z~P%x#Rw}8J3+g3FF*HyX}l}W#+UONp+B}$W0DpN`+RVcM6RVg)c z0wrw$lQiswwl*Xbow%ciO zq1EMD0HyIMO+;w|<68@Gc_ubwk|M3ylTn(9(&Ut;rZj~iQ`$Jy5N8@n(^HyO5nW}v zA=eC)W-M^4d1gwp8)p_uvzlT0?@nnBN^=`Hr;V-)P?{&78Zxgx&-p3mB`rYdT1pF2 z+L_Wqls2ZcFs0=wEkbEYN~-^q7Na!s{ST!jG?kv-Qk0f8!qPS_Q)D)KIlsyZlvML6 ztw?DlN~=;@nUadXBfGL)7ofBTrFAK-Noj3LYyFqAjz;O#T#u5!OjT`3(*X*WvyQrex;UKT!@(jJujfB$tE_VyX}arc$3yC0?e`TszRvKHXT2NfJj zhfq44lIlOD!)zR*d5mV$BPbn7>1awvDQ+%G$51-cfosxU<_vdgHrSmAAZM1VJojce|PM~zY;UoG_=^{#(QM#DYrIh~D z0*rY%rK>3E!@o`4_y3fxwyBE0U-vpnzfiiK(kqm1p!6W68!6pRNyVSi&6KnwP_h=_ z&hWM(oYEbX?xA!irMo<0`tR0wGwQhJ2aP0?TtT82*wuaUI{_(i{<^rf5X zz5O+%?03|uPQAvb^aG`za+{L&1xq`k|CD~ET%+_GrN4~xJ0)!dW@`(e^go^I z-SRi3jM6^_s{T{zsw;nK4L!KVoKTj0N?BU~W%vC*Wz~N}I%?=zV^f}p@;H>or)=V{{PEOV+&tw8D4YHd zu6220%P%r=+|B<*6voMR{r?PeXZT%F|Mw!KSMJl&9AytycA) z@=Q9l{n~UE%Cl0Qo$_pon~U-sl;<39EOu_ni%_12axVDu7EH?S`yb1*0ObYEScvk% zN+>p>dpG?rFGhK3%8OH8lJXKo20NLhoUIiuLwPyM+79%kvC9`mK2lzh^464BqP!mE zl_{@DSz7?*RVlAdd9?x4z%_~~WqbZt+S-)Yq3pi-_ulm>Z)AMy1?3GrzA@!3C~rb} zGs>GPX!RIVKLYrxwxuEN_n(xvp}afgZ7J_ec@*Ux%)1?B(|@-kum5G!e|O{ULU~ss z@21HeIGS?)#m*j-_cqs_HtsdJE|m8%WZxo$^8S<$rF;P8gDD?K`Je*#*$&aEtKqQ1 zraZ=Pdo_{d~$B+Lay>t4gWtI zPosP$<3XM<<}{{K=~EQFB;(`$|K_Mi+R;tujy3ZUvE%;hw_^SzD3!@KfeU- zD!gmB>c0>FfU;^k&DW#)Px(*vy8M4p?o$4n@;@F? z{V({rK{>Or=e(5?l?D}S2bBty8kHgauhf-RWUd5MLMqJyq0%bwe54ZD7`v(}Z7Sna zNvVuY#o9pyBXp>YrBV6u4({Q~I8??}Q1h7n7dL8U0xA?rh#S%E~rfmdbKeRxsPO04gg|S!r;RmVXs0Yf@R2%Id}(`4))E8UrR3 zZ2?r)E)Xi~QrVo!dQ?>HsjN>$#ot%85tU60-&jH2#imp?)7WC;iflneANZ+kY2#J} z)9h`iY)fU-VD&tT%Jx*wq_P8*!>Q~@WgjX#QQ6J-JKMO6joJci#ocW>n#x{O_MoE5 zudBN=+*_xHP}!Htfkxhs%Kl~?FyuXm%Ap1xY@@XR+XWSE0aV8LoJUYOk;;)&j-_&x zxsJ|9Gu-b#sT}7K>kAca0aoovRPr;i7N9v#v8Yqk>()BWkkf5ELvcOBv#8uf-ay6B!bRk2Gc8xFQ zIx06)QT?ZK1C<+n&YP6)YP*HX?Nn|p5GuC~<++2(odqo)soYKFX)5j)L=1(i>Sc4RG}qAkFfUs3s)%GXrBvpnC}=syKia{d32$`4Am zROIMke>TFb}qdJpCO;2?Os@eryG0K_QT(eMB@gKrxr#hFp=CE<(QvlVusha*5 z*Qh!l)y1e9SOp zqq@8+%w=1V>WNfWqPh*$m8q^zbrq^>P+iqWtwweA!p;M!u1R$r%VzptU0Yp>uWR6X zL(C1RZb5ZJs+&^X$h;d<)h?g~*nSP%jOykN)FQVua4SW0x^=;%x-Hdxsg9yLn(B5` zcc!{M)g6jJsykBMsjxkN7pl8a-PM7bO7&k~de`ld8&vnCs_>GB z)%~d+WSj%2YE$sugQ*@$)x>`URQ=BhR1c?m4Amp39!2#?1s(46-#EuoJwC^&`se@Z z2}8`2sNPKVWUA*=J%y_2eDzeS{<*z+nqFUB>kO)AQ$4eYrFxcM>l{mdF4gl2L`U8G z1yrx1dLh-zsa{0&5~E%0_jM`N%L>~gR~X^SK@zH0Q@xJrHHv8c?)!hL*HgXGkQ>zH zZoiw<);e#Y`ViGysoqERHmY}1y`8GcKGi$?T6Zbg_=ewOqx%$Kw(39C2W))MM?FmS zS*njveTwR%R3E4MSWfWXC#XJI*dBS>!k-y%Z2BD4=goLQad);aQG0>v%hcAT`USr3_qQ0Q|Gu1DteoOT$s;2o>_xB(CTHjGs*{AxwkNT17i1^#;zfk?1>aRvK z{df8Qpqk$me-?o{YM#G*=6|T=68$f=GSx2CLhUo-^c<&F8pKkoP^+uAR;5-`yjZ2y zpw^@o3=reAyf>nzI!`UOF|o1j^9!|(A@1+LQ5%ceIMl|@L4DCxu{J* zZ3>%CNNpl&lTx$RP@6=V`KvhX+GNI=+^;nywHc{RMQu82s{hocp*C&d^_=N7To-l! z{g>KI)MleLGqqV9Qv+x9{Mjwf9MndX-@@mnwhXm-s4YruUTO;%Z9W_4_pu97TiB3= zJhDhW)mL$w)fS_+IJG5>vxEniqPBEl`)w{uZB=T^QCo?cKKxT#f!d0WGf?B&%G6dF zoUx*OuCP)J~pA;VJBZo=)JA^!>0Jj8r8?B|tNv3P z;|WJlJC53s)Q+L1&;RB<+Ix>JkbFw*cxoq^_XKJuDn4>WPB#1$1@(k;@=erEqjnj! z)2W?p-ZQA3sRUj9EHyOeIn*vNG-Ae7w9H(|0wcDvV<@e0H zsNF;D?qaH=GX1wewfk-Q0JVpxJy>|{OdfW&?)p(`&ro}enmzf~9;fz%dfl7-Da)Yx z?-70eH}E-X&lk4ke35#7^S?wLYPtUZOzjnFpHX|2+S}A#vyj)Ry-Dqjp(xXTOHS<_ zYVT9C4+6E3=YMJ+Q2UtLhtxiDSJ~Z-pHTbszsTp*zNYqtt@Wj@qBp=-1&7)<)V?>@ zx776GfWGtutP#|Hq~`U%=w-EEs8^}|O6^~2zft>>+V4dawLg5$JpbR+{wh*=ulxHy z)VkDF>ZxVadepQRXyD*}sF$f*8AT=a8ug~~>(&wK4YLEcR=q{NO+BO@8y*eiQT@-S z)U7GhrI;G6Lw#22V^N>brejkdhx+)`RsX4vH^g*5{T?f5%r!4{)BpN>)b;s)Xhr)7P`8f&ntu`M%TiyI`cl*vqrL?7#Ygx` zSaK-VJ{Q!NDG1b;qrRdow>kqP~jZD-Xr4>Z4YtekAoZsP901P3oIdUyJ&B z)U5^RzSg0>?ohV%sc%Gm14Y!kq0h51^-T?NEr9xFg-b_eZb5xZ>Z7P{MSUCUs{aE5 z^=;M8-vagRjJ*AjYe(w)P~VBV>3n@>BkV$b*TErE-<|rNhL5JM&;R<;Y-`hnEgyt`k{s#M*VOz#`ru(Xo!nCiu$G0kEVVm^<$`? zO#N8uCsIGoLXM|?Lc#R0+75i|Db!Ch+Nn0WcO3Q83l8-&eAHRg^=Y5_+0@T5<6Pyq zeVtGJA_J{2)Gze-#Rgt7#Jr69ZPYKPel7JY%zGtu>jL$wiYNoGDMF}UNBw5%*Hgcd z`VE6T#<^*Te+%_n2VUy8Q@@Y;9n@9usozQcu7TH(d#K;5h+@StAlji&<=;V8Ok|e($o}#rK^`{Arp#BVvo2WlaV*%>V(P&VAp8C(! zU!eXj^%tqXNj=y9SE#?NE4nj$mHO+{RsRc+y6M03I{l~qwpI0xulzmgUr~Rb`X|&s zp#Bl{4+lAo`LWOTDfQ2(+w;H6`2}?o|9t9@uc?1W{TmI@bNJTBeoy^J>OT}ybNLpa zv|p%a)PJS^H}&7B|7nEZssAzH8fop^izNmigRd; zO=Fxvh%v{bF%gaNi&z>H(3o(9pp{IVPiahI%pL6pedrKOlXlzAe8_Q!Yz+GXD;q9Gl0|IA$pGafR1#?E*ATq;ZlG+$yKg zxSYnRG|r}xAL$u1tQ|C*{`-68Od4kmMV&+ALK^4NINx%f=W9^$_n9xEaS09g<&WJP zm(sYb@OsV_G_I#{B@I=38duq6u?fZ_uoj?v?J4fi0&M{V?%)3+n22CfLnbDeL}|t( zn9LiK7e+o3Oljj(1XG)#jX+=d{SZt?upq(o1alC~Krk!8j0DyT0{ax8)y`6oEq1md zmSA>Y*qj9O5X|NAxz*69c?sqx&_+-&bAw<3AGHv{l7=iyun2)_KEa|&*4V`f+&4dp zXq`)`p`4`&mLXWSz`b{Qf-MPFAXtxJMS@icRxfBz*| zs~{ME9UE2u3y@%af=vzFfM7#{jR`g?Tn28Uw&l0!W;Sk4u*Co;*ot5@!PW%Zo7Z|l zur0wT0;l}`WOg9fm0(ALoe6f*48>bM*kvf2eJBW2{JnP%fi6=ae;8q8Y;I|XpL2%~~^Ddv^9)gDn?j?ADz}iHh`d@hS zk>Ejsha95!{3C@;@F;=lzpX;>1i=>sPZGRE@D#zz1Wyw@XBnQc@mUSj49^q1Xvho2 zITM)v7a|$FLhw3)>OaA2MTpsNsI8#20NwlB1fLMRL+~NNy9DnOyr-OzYxjXpb;XY? z@Z(}?_NQuVw$BJYFKlCeN$?xNR|MY?eC;{k5ZJ@N%l18i^@89B%kX1yssumV^cR9( z3&ij4cY<8N{~$2U5B?;`i~mcL=SSyG?;nDU;9mmw4e;D*mqi=7cmSG4Dh)Csy3mrtQFR_bX7EQ_!5A=9C6bMRQu3rvFW^|HW<4 zoX%&Mf#zH^XQVkh&6#Mwl;$!t7o)kPA&b*oVuiko6+3DIGZa+Pif17tfR(mZKMDFe{&Sg9cgaoz1AI?JLpvRV*0O9 zJJZ~S=B@?qy}Q%=ljdlechKB}=2UNjG+xi?MKe46{v+;=2Uk^K!nU;xrQ zh~~jG4>jEDfAcUUxJnMEc>>KNXdZ2xyagOpxNLe1&EseuJA|nI`x8Eq=BY+IiRQ^P zPf=GP9lFQ-bq3ATXr4X*m7sN==`);7^E#U6(7b}?xil}Pc^=IRX`WBh#D6546MqZ8 zgr>?q%}a|sW?w#JUrF;Sn%5Za{{92aYxAkTw6^PM-a=CwfpKo6c@xc>bvm-5wg8&9 z*?7CU%uDl5ns3v*i{=wF@22?(&3kCt1Ap^gBWnw=RUV-E5X}c&tgid;z&7TiHfjr? z`MA22^CZoeXg)>rd74kteAc|r4DIf@!lwCxxwH{@2EZDr}@VKG5-H(<+An{t+8qT zO)H@J53MTAe`)q;c8d%&vm%OSpH^A3wX_A~8O$CSHJjGerJRN*G-<`OS_X#R>%RY| zmCzDeZI7o#l#!v;p*5Dfooq!~}?L_MqT07G^jn*!-j-a(Gt$k?iMr#jRyIc6^ zp@e%Hk|)`F0NRz>m)60w_M@emPiudFtq-JiP+@!I5Lznxv<@vY&>BPQ@c(j-q;&$V zqiCt%)3T1xI!5{K>KtddYXP)Qq;(3dlMFmrX?6m%PBlc|Vt)10Xr7f_ zdGgt6=pAw{E!BKl=h=9EK`{G58(j;abqTGjXkAL{a$1)SXvVpM*3k2R>uOpz(z=G$ z^|Y>~b)Ay)y}0c-{m+Y}b(4i#3vhSZt+ZaDbsH_!b6U64x`Wo;X5UHcE=}bszsEoo ze|>4T`)TE0;6Fg?5pz9A>mgbX7hZoRkJ5Ua)?-6aPtbbOaa`u7X}w768CuWL(ne5t zX+2Ntg(8nfUdjzxFAs5ErS%c5*J!;(>vi+0{?mGMi1RkB_h`Li_`42whx0zI4`}^Y z|63o^`hwOc1(VjNv_7NtxvRvTo9aI;6@N3n_NVloVKe<(@~ z^J$e(WuH)6fV(tdLu<~jW7s5|fUrd^8-x)iQ6qnMgp+y1|NbYO(g;%#>SI5l|NcLm zR+(;t(-SU1I0NB4gfkM(N;s2|XSQ(`Wg3}qHo`dxXD<-KIf@KMo6E+zJ#${dg$U>K z%=rlyAY8CGF*j;G3llCvxESH01=G$`8-&lZB;lHbOA#)YBZNy6n)s`|tmiCGxC-G4 zgew`x{|ZPsD|^nWgsT&p{=2=bp)Pj?*CJfsVom?UbqLobT(5}rr?dg#ri2?3S{Dd6 z^7tl7b2+UMgqss?p_vWLN5ZWL|0dj;@OHv&2u~v1mhd3LQG}xjwxX5$;}a3NPUvg!>ZiNvO(CxYxi-xR2-TM|c3?{>9X22deEdA51ug z@DN2bgX%xwVg7s$Cp?z$2*RTYk0d-wY5C1#_m446|Mk6a9N`Is$2)?{c49FlJelwk z!cz#(Av~4vOu{_mbjxs>=bZ81*s};t{B1?Ta|tgbJdf}KLKFX?N(e8qR2ORo$G?>D zI>O5cuOz&@zzMG?Dkr>(@EXFa9p4?rwLbQG!kY+h@KHB<{AR*ibDQv%0x{eD{-5v; z!Z!%-Bz&6iF2aWh?_1a!+ zmB)wdCkdY#cnO~|!n1@g5k5!wf=!<<_=GPOhJh~=zDD>8;j4p1)vG(w7LbF4ZxZGr z{1)NIgl`kRXI^Uo;k*8xd7tn@!VfgW9o`|10pCb9}e!XhNdNh$bSMgvj*2xR;_y zhf+;G$V@aP(ac0s*%DI|O-E#nAR5yDXnLX5FJExDAB=0hZGC>4EjMpUwXX`Cpwbo2#2_`k1F;^bPSOS zKGCs6#}y%YDxwn%H1W615}izRCebNGry=q92|iLNBl=YOKh3op?Xo^ut^^+Z<_T}yOL;kDT7 z3PL^-dHs)W^!vS;=q{pLh;Ap+Mqsqt@<220@W`ENXeDT@- z#Xdyz2+_kDIC3VBdgkLquM<5%^bFCHwwCHY(bLLzYduT!0?~5?LiD`HUnF{k$e#bB zmkZEyUL|^MfDpYw^d-@oL?02oMf5Jw+qsuW#ot%*9?=Ix?+*|oe5hW%TRtXIwI|Y# z07Rb-XhfeI@`cay710kwD*i;@5PfHcwE%Y@-w(z9Xx^WQekS^*$WVBRek0D6=Xc_< zi2fkXh5ApTj3_VWA0pL%qQ8~wPD!8tiMm5bk61OIs83ufXoZ*9u5Vl|K;k-aOxz%D z5v%?aHw$K760wRuaWsS^#A0CEM*sXDJN+l_xYLNoCZ3#l9O4O#Ij)W45s#l6o--lw zB*YV$YefHTsx5%nfBzp(K|CYzl*H2!Pep99A5X2R@@o{E{*R=c-eTRq|4uv;@f^f6 z6VFCG3$gpDcpl<4i036@wz&7QQ88CHz3|nLBokRCfzCD()6KTW!s3EkL8rBfgCIeBz6VFCf0KAQKPie|(9BTw281`K$gDtN0UNNqm*M ziUZfHa}Du}#Mcr(KztqXZN%3T-$d;7KfZCmC%&2Z7UEk6;g<7u;=72w{>OLvecerb zFY!GZ?sj?~@%=8=?eRh4r->gTe$-MuO#F!QErj?n;wOk7cZiz|5_c6TuD+g3ugFPk z9|4k5;UcM!gd|mxKx2~{Nu8uI9BX)!q*Y|lohA{9seKZYBtv*g0*SVRk=-R;|C6yv zCLtNe5{^qU0m*npEQvk;7dKBbA<0A}6Ay|v{-h++kW5B0CCTK5Orf#G2DNhg2$1;i zf0AiQW+a);nA4LuVds zM6wOZ#w4cv$tEP5l9=+3RJ#SqRwP^gH`~_5X^?D7qJmE{iex+GxQn|3$xeoQ{ZDpQ zuUmIlCUN3#)AL9!BRSvf3rH>|(H1~r`tQ!_ z5<@P{M}2Aj%So;yxq{?sk}C_GWa#(*$u$;ot-5k;NvB6*-dNZjxLNgg)xBZ}KzZ2B0< z<0Ma+{RGLA>NNt%(*~;k`>LKJd7I>UlGjOIAbFYO#ez@r(h%(xl2=Jy8?0ixR{hUk zB-#Q<-YWPc@7VNRk`G9<9oY1Jzv71;`A7{t?N4aua`Y+f63J&I-;sQ7Az#?|CCS$$ zUln9Sz9Dh{@}tlBJ;`4rKal)J@*~O5B&z@3`wPjhZtAZ1?<9X(D);+Ov+cj*XgzQOi(@tquXt!urX{+YbuGv^GIA#YnHeI%MNLvM;c0@ZK zqG>zu9HBinZU6k=?ihcpf{eOEN+Vkd!r#bzny@1hF|7kBodtt|MTU(U&sh9lHT0UUMteQltJ7YG_8PR;GOzXp zU#)!vQ0BS{x~TPOZ$^6q+8fi}koHEd9#{D$v^P~|QDm+g?agU#NqdU{NPDXyRX)<* zhW6XEx21gv?NPK3q`e*O-ORN;?Hy?EOxwg?$=VBiZMzs}*8-uP>;JyAM;o{Y?Y(G^ z{0UInd(+-$5NmtiPp6u5f7;X>uXxhinK92UW>auESA5Z%Pd$fO{{WtAjY5zg{Hw*uLDBK!BJ1^!hcN*?)H}P-(Yy2*46@Mi- zZ(s4WL|P>+t4pW8@>Ip&kh5K5ot`Sz2H9uq^WuBBS5ie z+94fFX&UAJ3N-1sq!W{lXW;mx6Pn?F|DR5z{Nf^}laNkHIw|Soq>~NdQ>g8hu!sM2 zYSL+3G3Fwjj&y#~=}G4xoq=>#(iur-CROqG`L!JssYqulY|`01GAF4%?UT+$s*Paq z-XxuubiRV0FG{)q=^~`6|Hfa4)VBZ)UzBtS(#5=YabNk8MqWyBx0hv*DM*(ky@qr- z()~!6C*6v41=96MS0r7FbS2W&NLBwyS0P>1Rpm0QPP!)P$n(F?Y~rsW>yVoMJO28l zn~`onx-sd7mUAPmXQZS}NUa4JLTVohQqzCUwx!R%HK}QMx((^Jq}!8@D)NwSS7amI zfpjNQ(|=n%$4TA)|3$hh>0YF}8Mr&?9%hU#^5-L|YXPKtn@d{&>Av~sYuKOkG|~e| zk0U*h^iU%lWaGi4hYT?fBRz_A4CxW1hb!)OXDz_lM_b@Aq{sgEgpVgZ*<2@(o@mBN zMY!3g*k~UFQf&vmw$n+^Aw5G8E&EIx&muMP&%s<<(sM~KBR!8))t=No0;KN00+3!r zdI{;pn!#PWOVze1>E)!R{OJ`I>-693t3Cf((oaaQBYlMQdeU1-ZzwX5-bi{A=`F^0 z&;RPuW512`F2ipp_4=RQ>AiQ8K0ta8>3zm=|NbxO{Yr2dtR18ek?O<07USxFl=M~7 z$4H+geVo*~K>7r!>HnZ>r1lXYb-({4eU9`6TkCnB|3%W54RQKU`ifgfkMT9q4@h4p zeV6nN(zi+9Bz>!>!B_ImfNy!;BYpqB$cLmKnd@W4-M&6Wayk8s^e58KNxvpl{U`mh z;E;ahnct9pZ?11izbm}?(xg8a_~Q`rGwI)?zmWb;`m5qf(-vTN$RDKoz)bq5ul%o} z*ndb>^GW|D?G~|xm$XOPA7M%v85gM_2~tHG8YTApFJAv8KtiO6v|Osz#p(r) zw2`rp6v6U{$2%^t5OW#ZyyJN9c*vy4_=pNVG6ABE!0k&WHgJ*wV$;cx$rUM%MW#f~ zM5aPEM5aa-N2Wn$L#9P$LZ-8j>5&h|Fx>SrpOL{r5jIJ2I~!b0BjfD*MP> zN^{$v#~bq@iy-qO3nB|B!Bw>ovasXl8_zG6ELwOGYXOQZfvk!wnd8V($O_2P$g;>X z1=FIILzdU6B{AlT$jZn{3R*D+uHx%i4Otgi9a$4ukhPI@22nm_Je!HY=UfoIQ>U9LpC2`Zi#GzY^8{9Wb2|-WLsoAWYiFI`+}3Ni|mNxU-j(d zqjpBLarlyULrnQ)_Z&n<7cOK^WN&1zBFdAs1z67gkfV|PkwcIJEbu@Z4?+$u$ewv9 zawKvXayT-k0F8Ns+9PH7@Bif(&+2lI zUun~;bm{`HG2~k02IM-$m4Ce&uGAZmn}(*hAonA;B6lOV8ToePPQ>(o@z4Kpsb)L7p($lgLv_bG1F~jc1EkEihPcIHbhqa_v?Ozn7qr^$T!G$h<*?lB4|gjbNCVYCAX2Eke`PLzak^Q|3rQt za{Y(nXe41!77HYI<)TU%F(Db)XMuYY6M%#clNv=)%RXW1OKf-PW6w>!7rtu>pgZCf}O zM!`|A9qbR=!)Vw6c7+{bXUn-$!8d!CA$vDNcK6x#fPG+31NVZxbK}2D>qh|CufX8| zIK&WZ0UTuZ!G+iCL*Xzu0>*&<{lCu%NBR>u8uHUS22O%w;RK64&PJ#IW}ldkc?g_r z(^G6bwE)dl{fE=xEI31Pot~+NJ39Rc0Ou44oCmkT`Cy{W1#lr;1{c94VB+u2`BDvW zt6vUR!4)v_1Bw+b!K?QlP+{==Pc z52*OV-6J%e-V3Jxd7$Qe03I>ggYb|tm18YHPwY{68Xkiu;PJw1QBT5%{`*sU2A)-p z+xzo$7Kaz;G~h+}5?+G$;bnN;R(Zun>kC*5&=uc+cMN|M-h#I^;m96U|G~uHaQMKG z58*TT2tKjt$3+x;s)o-1pTm&;^A+TR{5AXp-@y0qt%ZN*qTEJ)0DJy-H^a~H2mAuR z8TnUNo)-4IKZ-x$FY^wR^KZ@RGW<&?CwD;wA2R5vcR=Wr6z`NrGIy$UY6XW*yC8%J?i{Bx8=cwd%xSjv0(Y}@<{Gk1|2y;2(RQG(;@CS2b0Og2thv&;N9W^uMz$on7gSqO&8N?FuHH?TxmBPrH*% zcc!z867oH|W896-o^*EiQKOBvN5P@97oC0SSPRfa_wo3CM%%xbntdRh)9D;U=O{V{ z(-}iYn}WFxrE{3tZi9z={0KTn7Pjs8XgbH!ImSYcwNb@iUwRrR&^eXPiF8c%J12Qu z_22L1|8kqoX^Ob0Gw57S=S({1(>cq$XVW>C&N%~)f#+$4Tt7P((7A-pg$7TU^R+Hq3%h=hjn0j9ZlZGwotyv5ztt~v zI}_$N>K%-`3!OU|J1^`m#(I*@-Hesv_t5#B&b|CURp$WhPV&6{-FNN%++-#hWsqcM z?%K9(+qP|c|7+W}ZQHhu-+JGv>YjYF=j8OMe(I^}>YlkzO>#BzDkFC>@+2d7Gg5i) zVdOzZ?q%eDMpXYz@v^$~1+Dp^%3$PSMjo-Xjk(*U3o!CHBTo#fV&o}CUSy=w|L4^E z3?t8q*Iv!%4U>`j`G4f48hM$KSB$OezQ)K$jJ(ds+ZD*j8;pqltNm8J>vtFtwP)mA zM&2{t+Vue=9|~gE{g{!j82N;e&l&ktLq7X2{|g1bti!)%Qjc#8C5JSoqY=^Q>a;^6rjgPR@i!S1&+1irG^V1_r%}?# zX%s>;Hhy(3ys+noONh*Z2^*h zP8##kn2W|dH0B;eDPMYl?rwe>3o5cejVxpg1s9=l1dT;$Y)oS@8mrJ)oW^oAmQe4K zG?t;U6pf|rrfkk-hcbx%(^!GVN;Fm!TsaD^Y-}2<(pZrm-81J!n|*SLU8H#)!Yxvk#5^XzV-4pfqg( za=i|uAyQA{AQ}hLIKStg)BWHD5;KHX4`HxPitMG_Iv_B@NMh8uI*K)2KD7x|NCg%LE~;E-$|o>{+EUBF;O(`H6b+ar|}RC5q}yF8n8a7 zhZTIJW0C9G~S`{B#qZ;JVoPW8c)+u{ck*@QQ88e=I3d=sEE~nwY3G< zqmvdu<5eABtHx?0G~N(H@Hcgow*WMxFR1rj8sE`)kH*J}zfa=>H9n+a|MFXXn4i%2 zipHljzM%0Ljn55k@@R;>1<-T*TBqO8_||gl{qQ}FpK1J{-XC=w(*MRUG=8J;tK$Ew zMtMp7zti|*uojI!jZNcknjVdRXiiL{`j716Nno@3@4VGNXdH*84L5mcj%%|u^}`=w zPC#=)npXL1Z}rPv)x&-DBmS!Y&B-+9f-Nh-SywveRZlQ#(R4Rc|IP!Fx1wntd}he46&JK+shEmuyqfl(zsh zRs5^i>K<-RM{_Hh)6-m<<_t9Fra2?cS!vEx=b2eUX0fN*oK2^*)6{4F<{b70Zq6lq za~+%W&|H}2yfj7aY0gJ;e({bWEJ$;qq3I$t7pJ+XlI8io&ZGL@T#}~!$sgmQxlDD$ zG?%5hqJ}I-Q}kc$`uV@P63sPeu1s?^nyb*XPyRwPUklCEYhz6fTuWTG{&i?>KvN(7 zrT+D3t}k9C(A<#bCNwuP2+fV_s7+~ZL31;jBK`u}Y+Kr?q}rP1zBIR?xd+W{Y3@RE zJDNLI1e)9HxWf>6Cz?CU)ULa$5_U5PP1^!!?pY&yDPeCN_o-LkkLIy7_osOz%>!s2 ztlk4@9%P~_8qGs!9;UecE1)zFr+I`BbPIK=qi7zjv}1;1kE3}q&Epk6fo7HM#DQ1A zlj`tOXr8XfsWeX$jy<0~)>(ab|=8ZIO8UxBH z-9qyon$`3FoiuNwc?Zqgg;2ffQ=%#QPgB}Ky}Ns9K1B0Anh#V6&HIO357wNAX+Elf z_FVwY$7nu2U~1r#G+(9p6wMcDK27sEnkxQHEB+e(yo5*rFPK=GFX{B<8h@o;@im(7 z(tMrfTQo)gX})PVx|WDP&36PbTa)Q~G~YKIn$iN4`4LW~r61G$h2|$Tzoq#p%`Y_k zGaYRgp!p@uuW5c|GSp>!Q|I}PrV4)ZdzwECI5dAUHqD=F=C3sWpeg!K^EVxTH!ijR zr1=lcztsL)aC;~Gi!-)>j{W(6wd-r-jEmF284qU)obhocQtt#f6G{ei=QtDNOolTF z&ZGmdc3J($sh|Iy>cjpKORF^2Y2rjU4vvrG;a3Y3yjtpBiVH!MfGq;7o@z1J3k9(2{Uw zw6=I>#+eOgmI}d<4}a<{&u%z4a~Ke3E}R8$=Ej*1XCCFxJH#KO|2PZQu?yiWJj7WP zXBC{qaF)^V#c`IvSxRmDSAcMqHnCM1ILqR!fU}$umLI}bRAeQbl?ALWpS^;s;;f0Y znqlIsj)?5 zvk#7le;u{2v2pBofpHGNISS`MoWpPq!a1ZO;Eee$0M4N%R`J7ej=(w6BK8cA#yJj0 z^dINg0a>TV$-)CDj=^o+-Pt*WzqN z&cQiXICk~(aW2QX0Ot~%3zcvY&c()SXgH$(IG4#(197gvxen(_oU7G!Rh{h`oNLF# z%H4iF&W*~sq2}B)l;;+lhjDJjxd-PqoI90yyN-9%eAR#FZW|>z@5OmQIrrhH`0EB0 zc~HlPge+I^5u9gm9>sYQ=P`9Xjx**jztu}TrLL#zgL)R{1x232vHGvsUc`AB=OvR| z3G(n?CwUF$dz{yCzQB0{=Y5>jf1CX(^IsWVtN*x_Js$2jmg$Z=hUt!vJAuLFB;AQ{=fj;Cw~IRo zu8%t@ZWDJhToHWS$#JI`;)AQ=Z|-Dw%wK`Sb#PtWHtv7*->voE4RB-48R{76IQ03y zn<$d%m{p@z*u$M2w~sqLZjL)OZhCcWcYh{J7i7)Y{wA-WzuZTGhBC?w`0j;og9|GwyM?yWk##yDRQ~xVzz2oZWHv z#2sn@Ql9<&FI{vWT&w@}G479hfVvJei>iGv?vc3K2;4()4_EN8A;J;H#yv`1N9%YD z?vVJ)RX85^Jlqp-PgBB)xD|K`Zl(Vx+iPJo+&$GKRNCpdXXC2)yJzCsPksym_Z;P@ z{@YVJANMi^FTlMJ_Y&NTaP|NH>ZPxDYQGDNdpYh^%D)2lN=a+;T#b7z?lnWmb-33X zZ_T+8_ch#`a38_F8TVe?>hu4*aBsy`&3A9BnRnpYpZu%~5dFu!XOIy0KHLX!RsY2$ z?*)|ekZ=Tf*pP7_#eD(yG2EwdAIE)Cy-$eOeie)US2pf5xX)F2aG$MXRsU_~7ja+K z*q6*&YD){ieYIZwb=)s--@ttjSDycI-@<)I4ch{6Mf_|2`?w$DexQU8asT`IkNXMk zXSgc!nS0^$BeYfjw1X@$7|(3%qWUs~f!Y-=o9W78Ukmc1Di9GBL3HkCQO)&#UBrZu5@ zClZ(Lh}I;uCR1=ydpTN@(^B!*K)D<(XtimL&~j)sl-xAoGD;0DtugvfOT?d+uVY|1 znkS+)9jy+nzPe&s39U@+R92U@y0q+X{@QEQ%4tnatDrSXtCVb}Fj+$Nzq)f;qW_v_ z+B(nlv}U3;Lyga90%^@mYc^Wa6qIj2|ED#3jYtd7O6H=q9<8})El+D6S_{*fS3~Bb zwE!)B{XiMtvRS;a^^Is_Ph=*1BTIiLFm-Yg!x7+ML#g zv^J@5S{v!OvCS`tbOBnMNtE5}7K-RwfL8te-_|y?cBZv0tsT_6osQcNMeV4_P6na1 z3$5K1*;U8gOmemNptUEhTKVmw`_P_{*1ohJrL`Zei)ign>jYW{&^m;c=s&H4bUe5k z>rxM;brh|`XdOXI8o`k3$eMFBt>b7NL#x*RF?ZMTHRnWHXVR*U@ibZ|(K?0J$^Xr! zEkI87^a`gX`ft{vbrvlVd|GGgcutLrz@*(9$;1 zx?DKAL0VVRx>^IJBUGi*8q)vPb+m4#bv>;cm2-pPsC`qtuUlw|=F_@$$a{P3y_41h zwC@>v3AI(RzZ`^R%9%^$aZ) ze+hYdD7olAE$Ibnyg=(^S}zJg@FD$gy+Z3%!7cN3TB7r`-k>G=ueQ7es0g&)q4g21 zcWJ#(>pcT1;R9M9nhZ5l-VUhi6EWnq}Z+E9a|vbrpYIOY!e$ zeNXErT0hYGQSwwp+B$zWX_fXXt-sW$R{4$AAGChAWLrc1`G4zg+SS(np*_N26@q%Do0deNR-$0-I;w4psh zTV$Vh!|tN(7=AUS-J;#0-KHJT7X4SIw1Ao%DiYPxn0AkLLOWBu{`sGFS3)$3cAs{k z-n@=d{ja>$6=_dJdv@AW)1FZ|)6kxl_Vl!;8_J+R{Atd-J(JRAradcd)qji6X8DqH z4%+k4o>Q4~(VmC)f1m%`(gJk9^V434_5#XW&}Og+7pA?4p{aK<+Uw9>oc3}$U4r(K zYAi*28QMz^F_#tF=3kz+KIgYrP_pWOd!^dD3hmVuUzPT10@|oGXs<e65S zvTIe(|I!OgTH2!j8nrX+-DvM3Q^~oj^cuN;cBj23?L7>x$X-MCK6snc-k0{rwD+TZ zEA9PhpHBM#+Q-p8koKXp57LC9|FjR0SX;?qw2!21^`G_;rn}KTiuN(Ij~-g(*nzD{ zj;DPB?NexzqJ3P zUCI7mgM_sI8Do2685>VqK(&@P4qk{iF5VP)$`FMd$bvuegcsX7NFU5-u z6E86YybQ0Wt7r?54DvQ%kO8kyue1O>{VPDinHp~~ylL>}z?&9Ndx19{-tN|QGUGb1(X_8{Ksr(XZ1=8z}ppXH=$YP9(af2 z?TL2)-d=e7;_Yp`c=r3h8nqwZ{zFj*;)&qn9i-#X=l|ZJc!vqop5zgD$KoBSw4-!9 z8t<6FscN;y;hltcJl=^qJ)w>r5`XVxjXeeL)IoA3pN@AO-WhmT;+=_i0p3}7s{h{E zcq;y5ia8HY#ozAzLcGiHF2cJ6?_x=7an*lYzdZlrT`^b`?=2Y zd+~0-6P?Gq5$~p&d9xUDb#BGG3-30(JMeBdV9k*hP;X!KAMYMBRr@}?`|%!9`vDyv ztnZVDbz19x^rU9>^ZCct0rf`}$0N9OP8|XS`qVeicyn zqHFzz_b1-(O88^o!V~?+`+Era7k_;GvGB(cmp?YX9!s4Ke_Z_W#_)aBe_>9DKN0@K zc2VWyPl`Vk{$%(q%{Dpy6!;_fQ%VMj!lc4);5+zDgPSDy_NRdG+xQv2hu^{X@k5Ob zYFcEHm{|N6Kf%{0e-$D*0l$l%XPsIA;+mp?WBZ1~gQ&xAj%Moot= zvX3t1@?e+&Gr72HzCtqiXAHu&2L)1K1y_YWsgMWb1_SJDeeARz*+er9fq$nOcNv%3_u${J z#=Sb;S7#RSSLDGOd6-}v{73LV#eWq4Rs6^BpT~b3{~7!z@Snne(nM7u`0{q3j+I8B z*`6~X{tG&N5&va1?B_rDuNZ=Yui?Lo|2n=1KK>i{Z(6UtA>UT~9RuROhyRfx@8f@f z|Dh%8rC0o8{7(e5;h*9E5C3!g@A1FD{~BNPA79=M$V+yi&;S0n_}>izt8n}u@PEb^ z{m1{wkY$wVFZg3x0RC_Ie<`jl!2bjPPs7wae-n&_|Bn*>6?}022V)c1GQ=BZnDMH;#88Dx5iCux%)nc@ z2$myQk6?L%)d^N05UD3vkzgf)l?SoPTvY#+yYY>9< zb-Dq;CTeU*uo1z=#%op~Q2h^7|MiFnwjkJ#U`v8s3AQ5GjzHT%u#F~B{kJE%J%I{- zpzj5O9c^Z*c4q=<3iT?x5$r`^^`Br5O{FcsrrMieAK^>vzID|81cwu7QwR9J@Fkdr)A!NW|fx{e??f#67jV+ln3363VHpZ|3^1+^Chwf+Yu5}Zu%f9e{e|2jQ| z;8cRsD%%vMtDHgb8o`+aw-TI1a1FuP1eX$=LvRtnxdi8H?0F`N-~xgRhcl@6VgeO^ zd-9hNT&cLe1qke?Km_vquekIAUHw{}UPo{v!S%IQdVzXxB2di_v;~+g%URt

    J^K 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 !a577<*+tG>NTXkL+W*; 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 z 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

    r)N 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

    wwhuN!-fu|7hwrKmBK^KX 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±bL%SL}@TdZteQ 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 z zp71V`yM=TI?vi^+?vo@dm-4ly@*v5hBoBG%9(I_I|NX0c5_JJ2kE>Qy{3n!L%u^(< zkUUM|oES!UUm8!$?MLz|4-f=gCTjF#M zKZ#R|U4(Q}(rHL1BW;pSPFf+If>b`AbV{cswcgCaG;~QhlaN+P>!eW;>%Rb2!iFR^ zMzwKr+9Dm0wn@9B9m&VEsI*7gmn3uhX-qmoIy4DsLYn4LUbilsigaoT?fP(M(rHO& zC7sTrrYH5DF?IiM_a&W)bmlSjNjghD&rN3|m4_#topcV;xk%@fLa!e&smPP!E75~NE?zxA7T z$+o3Qm-QseEL4UD6Fm*CSp3ADx!aE?Ke>shV*X^i-RYTHS6&x-IGEq+642LAs>?Z{AC~ zRmOeR}$n<~~~RiAs1?q#V+ZEHbp z59!{8o_$FVAl;92e@VQ-$djZ8lKS}%N_em*KZI27o%B$rhdDjm=@Cwk{Ktc(N4w-0 zr}F=##~F2dPGDqw(i0gOm-Hl$I+^rU(o;z9AU&1zGSbsXFC?`_eje!=q-T}Jeuwl- zUqrQs=xlGL=a8POHgAo@De3v77pQOY-MM<>lU_u63F*ahDF(ABRq3VTRWp~9-avW< z=~bjxs&dSS+p=wXHR<)F*LbGal3tfTSynlw$1pbRNpB>*jr1ncTS;$r`4^tsM=GHzz`W)$#q|cB(Mf$Xc%~n9$v|s?KvcJGv*^POg^d-_4NMDqOJ6=>? z_gKxpO!|srR6mYc>_EJc@fg7?^9y+@ zy9*-|Ffu746EfnT^o~r#$i(VdMkdjm!Y)s%_d6q#F|rIJlQSY0&Bzptxbq(=F;aI) zz(~l52Kdk6oORCH^NnVFfHnVFfHPnntVZ?9fC+3j7+ z>s=a+Mxz01z+-!LN@q}7gVKJK)}*wVX{NLmrL~oX=yfQq>xBRRrR1Lg6@LTGMN1n} z^8dex-q<;tIBsg_sWzviU$;>5U%-_77ceFN1x#sc=WpY>f!-ky0De3U1^N*x-)Q~<}0t3FbfG8bD>G)wP8v;(Gbei)|ay;4b6iTNS zse~%p=|d%FQo5VcS(L7)bhZnhL+Mf{&UHM`@qEV%9Q_wCrHh=t*wO$0GO+40=ji)y zl&)~R(y=JZ)s(IoW__*m{RrqF?G4WHzs8hqa{6XUw>WXDn|+((?T&X0_1sD6u7Y;H z^}wQ5@1=C#kiOrQJmC1C<3o-QJ3c~5|NnCOF-niSo+rlW^zQu>rKg?H{ND*J0Vq93 z$>;wipZ^!z%cYkz5GeL#$5$x5>V!N0lIH&!9VGB3rQayMMalht>1|Cj#D9mRt=dY{qT6c(8!f{E*r3{@|n({KD2Qtf1Ucvdx zi>azuk@9MkS5i<)R;H|v=22c%9BbIkKM{~YsYPhSjyW`-o=w>6+n3h#~mr} zWQ5Z@%g6!!-+yV_ZE$Os_n^GDOZr-%?DK#1oP8)CO?h9+M~$B1Im%iEP~M;N0YhyE zQa;F;2M;-ic<@lln*2L`xZ@F&k1Xy}p}j0-bI$THl>O(AQhS_SgoxuEPoR7v<&y@M ztMX5#d{blnnvpE8VcGC|^hUYB6Q)HI%O{1Uz^> z<+~~0K>1b=-spIf8mRA!?x`xvWSkI(-rb5SW#(f*H1&f}=H zfJU)OnM#dH#hFzx$Fy3d?o9t&n5=42iK(=l>GS_eBze_X+p+Vnv|TERGt;4rF99mO zLWW9CWdkZBRF{4!Kl zrLruQ6{##IzU*Ay(ZBzx;7UXO%FbU!L6vkhDr-?$-I;3)W!5ZWow+uZb*QXIW#Iok z)%yPu*pSNRF1eATj|i1boZgg*27;lT8UmwPIB2)vn zdGK~BcTu@x7<*?C>rr<*%Kr~bai4SUr}BUk4=PGJAENSbLA&Nhsk~3+F)GhedE5n_ z7)n0r!KbJ^?S%XPK@~kmm#E0?Q+au4#=!YI^L58J9N(n!4i))- zDsNNypAkwj(EqN2ih6Iz`GCsbR6eBgGnJ31eC4qpQ~89-=TtuRp!~ls)z}vWO=al+ zD_>LbseZ+WfXcU?UdPgr^=YLR3{K!f}@>cHv2=PD=G3|L@Gn3Sp{K zcyN^C=z{6=R8(i7IyKelsZQe@`F|&-6EVnW2C6eUb0(@Y7tCRlZ!T45qdGU$*{ROy zVsjK}sm>+B^-z`bw~Ok$!?b0pr&6s@U5jd!>XKAzRAZ{{{Hp=gkZNO?s_AK4gWRPj zqUz4S+9_l#ifWhYB2*KqeV0$EWe)IO?3~d>rma$qtN={| zJ8=V5Ie!)5pHkdR^%kmkQoYq>-2Yc^clr(q7xL0`7uCC|y0@?1;{x{E zkf-_()wiiWO!XzIk5GM<>Z4Sjr23dAl>c|)iGNx0lyjb@`ix@#vG6&n&wG@dzY{Nx z5up0Ab6%nPD%CfrzBZK65HK|FO{(($1&8YYsD5BH)ps1e&qNu z)lZ!Gw2(A0s-IJ{d+iIVzft{?>Mv9^Sh(2Nj^8+b>-e3cj|g^$333bhk%;x2x-@X+NA%IoSfQR)TW>|6SYy)rgnJ^0o10XHq}5< zsivVez4ND~Hr;@42P$ea6f`vr0owDa&FnVJqP4b+nbmPNYO^~rhs4C6)6i&Yb5o0{ z%|k7uHm_?aQ7aqaVijsFC#sG$$2v8ob-Ll$G%Pq;-Pa<~Qr@Q4DQMeHr`Dy`ryiy?P>u189PNR&Q^|FQ@ftpHq+QC? zQahB|VcL5vc2H}FQ`5s=YDYRA<#@E?F^wW0s7JwfeB7jx%dd)nz|44rtE+H<0dGYmEPe`+sMlW(W?61A6|@P$C_RcfzE z*xcz;S3Ca=M=SL^)ZX$Ie4E<;1`TSGgP!oNi)jd;X5R(!v9IPW&oirTUH9@1oV9e+*R_|1TRF)U_TiNvu8=_3fySO?^%3<4|9O`nYQ1`gqi* z)~Sp-)W@f;zC?Wj>Jw6*NVX|Bu`I7oqFe@?NvTgZq$j8Dr~T{tV+-}c{y+68C9mW@ z1lVS^a+!wuwA5SFr=vczbEbEkf%=TpXEIu;Y=8CIZ>Y~gy-Iyn>SdRi&Czy&OwSyS zb5fs6?I_ONj`KLqOTAR^hp`po8%@1Ny+OTB-M&mx)y-mj+lj3=RabU`%ML)+L+Tmz z$W^tecd2)%$MR$L^Xq5)`C~ot*i^~i(34i`Hu<+KjObI(sgEeA;?GB2&flXJa9mJP zb|=<-FsWfid!4ql-puPn4C7oD``m)rQc6u2@`6zqfQXkI$>plb&53}kk zQeVj>-T&9+|EaG^eRb-qDLYHrh{p`o>PLM}2)KHgMd~ z(T9M6@Fvu^pzf3Z`eq)xx#2L2EuFKKIMTc|^=(8KhZzP2Z%=Rr^&JRKcbOfj??hl7 zb!Y02P~V06N!0&KeLw2EQs0xhzW+vDAAfT~UzGBMdr{wq`rZm!0SB@AE~o{m?@#?0 z>IYCilKO$v4^nH|Z6Z|%Q$NHt9O`(OqtE~AM;I*)GX5y)dh=JDK?NR5{dm`K+)(BO z>L(Uzi-goqrhYZ`Q>b4;{Z#4~Qa_FQ1=LTcelGPh+_p0vi;f{bN&OsUF|hnR&*J$f}J;drOxU53iV(30!Ux|h0MKyb|k zKH%B;$KUGy@wfWJ#!)KS`6%_Ls6Qr-f{#=8kAI4OQffs!P5oo)&rts#^=GNSLH#-E z&llyT{sQ&asK4lvFFC&KSk&07Mi2AS08s>~ze)YAA^rBC>SX^r)IXs9F7@{$taf?- zU#UK%{?VW(+p#*?_6hYLseelSJL;cN|Caja&i}$vQUB8ME61-LHTf^{)#-Q1d{5oq z|0-%yI)9@63-zBR=50#-SL%OJ|IIc3?pFQb_@|?HP8X*Bw`78`q&XOSOkM=z5-dwF z9zllyf)c^_1XB`BKrlJMgai{QFQuK>)5`x7s7Db@>NuI9OcG}bf>Dwet>HjXHogQ? z5zJ07HNk8I(-6$y3a2HQ&LyXp*g(UK>Mg-cMP(AqOfZXcW*t;-;Vxv)9IjcDe}cIj z_5B}$c^v)aFViVbnV>;XA*d5n32MsA3pF%VeavWrCPC<`T7x?)hzQyP^GwFxa0z09 z+-1512|=2n1HxlL&St zID%j|f_({gCm4GEU{B9+FM_?L*^;PohW~#F_9HlyV1Li?0DbZ(IMDGR$AdL>RACR1 z!2|j*g2QE!ab)L_1ji5@MR2tA8?#uL1jiB_r?+vH{CKzg1jiExVlGT@GQlY>bE^2V zO>Y{C_6|UBCJpO{K4%EdCis)!9D+v)&Ly~w;5>pW2+k+Cgx~^#iwLy;qswM2fi{IS zAMh;#f=dZ5Be+~AHvNSf&+bZs8wjoGlLXHYJVo%dFEkb!c+22fCHLYJJWueV z7e`BgVMlsNok0b8h2SlMR|#Gx@FjrlX4r}^c!S{0LAk7?gYNe>!T$)}5#QRn@XWz` z1YZ-pPw*+h2L!(76MU$=?A&bdF~KLQ^TEVs3WCoFz9jgZK$CwdF_b0p|GI4c7JNfs z_$|Q?1m6*SFTP3IWoyacM}nVZQZc@Z^9#Xm1U~<_7L@(J6Zq!86~{^{j+7Jl{!j3? z=*Czy#-}khjqzxVLu1?`cTM)Z6VgD0>2FLxV`3T;(wL|?{XXiWIR_Qk&=4@FiiQsX zjmchM)IK86=1sCxBAIZ#2qwJhnXw2%w zY>u-VIxz>0IfwLI&Y7FWJWk9zhE7B@ z+B7-}7WH5BjYgM7;sPm++=+}vPhu);f6#>*BOaX3aef*LNWk=XYtmSV#)>o+rm=|D z$V#aF9~v40Xe>@+87G#Y;q(8-QXX8|P?z1ajb#g(#&RB|`9BSv1sd{K(w$;^S&da_ zT47hEX&qoS8pqODoyL(g)}XNtjWso%HrDdn%80c^6fYk&*7d0MXsqwV1~m4du_2Ak zX>3GeQyLqOdfT*ZqCY2EDnkV~D}pq((8=M(mNa&tu@#MN-R!L$w~?K8bJ?P-v7O`g z3d)ilY5bSQPBeC*v9tP~X%;Tz+IFR}n^v{9NW6b`8oQ7B;WJmbCyhgC>?Kdq*qg>d zH1=_|`_kCoKEg?3Kj~K$9YEtiRndF;)s%A%rlHBdGBT@V!(lWIm%OdbW#JLpE3m~~ z<0y~S`(HGUk-S~fc^r*TX&g`EY8ofduopZ{;6xfHIdL+LGiaRR^ri{x+=yu?x8|8e3n8kf_!lExLv zZcr}Y{IO1Go~LmQjhAU$OXC?D*LjZD(|DT34K!||VTV6e3a|5C7)GC06-U6oKV?pC3r5Y6f6&kN9s5X6# z#_KfvWv<2>G~Vr;^%r0opBTDfpV9cz ziO(I?xJ9{Wd`07H8deqGc+|HvtVO=lu3F=J#~*0?D9>O??0xXYPa-TRfnOYdb^Oio zcgH_y{Aq+PCHc!W|1E3H_~ux$O2jxc=b$+*%~@#b{3lHub^ep44v0E2Ax%I0*_@c> zG&ConIXO+;9UkjPK%0{dO4^))=2SFC(VS8>&>UUx2Pm~V0_suIdh+RL&PdbGe@b4j z06TvsiAmmehYHTD9-M8+pWV*iI%iJDxrY3?Y0l#u-~VrxhI~B*pjmOO(yR^nbrIGT zn+=*HG@CBa8peh+?fajFC2f!D(2Sk1kAIrN#4$B=LVp3K*`wK~nTu(i);loG`DiZe zvGY4FKyyI}NPZ!`*Dqob!r5ppO7kR|i_tuu=HfJuqqzjl{b?>qb03;Z(ex3ax%9AR zmZiBq&E;sWNOO6b?)h!nVD)Cx%jQZn*QB{J&DCg{|6jF8rJLHiP;+&fYsjaWQ?-}J z%}Y1eqPZ^3wP~&+XZyO;lt=a~f)x%p6%^hg&M$@8pp}7;yo%I%j zWo9=PJ&E0A4NplZbXm82AG9JynXzs1S%ZgwnwXN*tzTV3F4O&F~ z{{Se5l)}$c%I|= z+Ov}6g^m}|yo~0>MtkrQ$4eD_c~zR1d+-X!D+{Jj-NSOchL$zfwX{N-*U|it=Jhmh zqvH!k@f9e;B4 zFM8?z{gu`PG=HNt7R}!+%47d<{FA1?5Qotw~*GB3cvcK59+k_@6P_)Qy#Ja$2*}nu69ev_=`nnWJev9(+<4CLFs+zP~ayZ6+^d4Fft+r_EkgX1_6==n@ z7NOOpmD5US^}RAvPn$XRBwvibvTcOceDYVK=XYGdibHEbM{WK)(|3WyUzFAov=*ba zxS|RR%}=(Lq~)7GMSo~5O=}sqa9PLY9G5p#?y`JETI}s^u z^?X;SrSt!^)*M>07Ol0NvrfSg4(wl_)<(28pta#Y+SE@rR!{}pgx02mTvYR$(|VlN z7PR)EwI!{+Xl+GnYYD49xA7#~(%MBgU28j9+k1QM;JBmoh`*Dg-Xj}wEF-=DOKUgT zCYjx7?ctm~3y#x!7go8zzO>G!wI8jcXzfqyK+jr3fD;GNI+B)t0Zi)Isp72;&$9c`$NUBz#b%LWm1u)K_p--W8>X1IoJJ0D}-ZNA> zr8<+A#w??qe-15k(dW{-h}Ln2(^7C}#Vb0JUb7FxFsX*~jPZFkVRb4cGs>poiY z|Fnv#xVMOM&i%9=qV<5^;}8CGkIM->?94|T^$HlR#|i;jPtf|F)|0eeb0tsFdRkQ> zQ=g&blmFIpw0yST^7((uzXDXuvRaz|(|XzQ6-QqJDEaHOKBV;qt+!}-wR=ya^)@Y^ zW~dbJc&6_TOZ^_L_r25~6db2NqV*ZAk7<1}bSa;X@$Ixer{#{l^#!djhmH6Zt*?jl zH?+PjXyKq|{y;bbtse;|rS%h``Rbo({Ygvzw4(K^SJ7{dzdQa>RF~8L=Q4kJANyMv zjwQcj2}AGp;W$P+e>}no3Gt}$2W1Q=P^{g>q2~V{HL>F)g#Y+|!pR6n5l&9%ue4Z_ z!t!u5;qVa?;!db;B>O`E` z2^S=sgK%!bISJ=-`Ll+p<{`9`pJ&yVTCXvth&w`Vbh5^p+5_d+J>^Q z>AL6^;o$u*%^SnEGdqqkp?3QTyMzg0svTELXsd502zy#qhkdQ$B{t$XpQASa3FZHX z87)M(9^t}->k``he|akf;i8U<5iah;5`@bUE=jnI2Q>;1E^X-AmK9OdkFDqxwZf=3 zcNz7?#Dpt4u0*&p;Tm40tElIPs}in8xVk<`Vbe$}vQn*SsR-9{oof@i^S3CwY@4N+ zsfOzlZXnuQjc`N4jR-d*+*toNdALNliQ}dcu(fBnIpJ1>Te#*eHN&@#WZG;}8g5Ov z4Wage#Bn6tp4_zUKx%z;M>@|F?nK*^>`ZtXp_yko&D0|acO^W6a5rzA-3bpS+=Fm` z!aWK1_LA;3db}f4E$T@7$UTPp67Hv(vAkZiTgm7D;emt)Nz4p;WjqmzI)qS@e>eLu z!o!WJ8`;oKtw`V~Rg2Yw`o=MY$2oDVn6^g|`u=}-f`Sq_k?^D;eKO%G&h-6%?*@ea zusb}1=vu-v32!6xz4!2JLT&F8p5u6~<9UP{0thd#pvoeFiwLiBLXQ9lFCn~?@N&Y- zB=e7$wtxt)EI5Q$6W&00O(8>QxnDP=uUGL0_TOj(;Z1}$6Z&J{@RlOq0V?)(!aImU z!aE6nCcKOAO~ShgpCY`6@L|Gx2_GQ5kMMro7glv5_3Jx^CMffS<+l22E+Wqp5Fa!f)iSib_yrentIFZuMB@;R zMdat53eC2fj>aV#Z{UZGX=~?be4~7U3KFks;T{H=i&jwAcajf>D z$%sY~O->}|qf!j`qlu<0Qpw5KbE0T!qPd8sA)1+JTA~?nj!F`^lXW>U>q zWqzy8WTIJ!W+$4JXtq)BzbHw2Okl%DGzXD3f0W#E6lZRt8qqvNWukeBy!Nb6rcHKM zh#C5zVh$3jbqcQ?wwFR)YVku|k_R^w2t&x)@HNXeLW)o|F30a!<_33$ zaH0c=4k0>-=wKOO#+!$iwTBWNre=N1HvpyK2%@8jjwEvDZ(Y%ZZMP~qhUnN)Kgz4C zbyQc!6P-tN0@3M2ClZ}PbQ00YgWSEl5}itPnv`2A%SHOnAUd1qOd>gd)x7DKo#zng z%MW5&k9yiV$@xT=5nVuZG0}xY7wHtD6@MUq3DKpZP2M`8G+a(}710$$SN>Da_R-YH zI*B{~qVjEB99>7-I{EeT%+U=*@`^+^65T{}50M@OJLeWh9}A+}oW9-h4kF+Gj|Thy zM0Xp1@Q6Ip{y))uME4UtNAv*ElSB_X^C6QVdf4%iq5Pvnk2&XY$0rK@F!m{;r-$@2 zM9+?iC3;?&Dz6uaUL<f?g%^ruAM6ZsKPrTv`9=Y-LhW-ZZIL;JsW4c|C^ zOZ45p%JKv4v7G-S(N9J=ZFlZ3M1MH_tK)BuzZ)v8l>bRo2>(?uiT)mB*B+bp_>ymr zWxb1BLO1-q1&KmTp( z`7dq13q+J@S0pA{qX6w1?K*9L)Y}edH-?!uB_=cc`LBq`gY81V)5f&Bw3nov&|btj zDea8*{Iq+tbLaRdU{A5zBedtU;m>}&H9A>QQ_A)Nv=^qmAnk?p4J*sej=LC|tCwN^ z{I~7Tf7^>YX9>j?&nVkV(O$`!OVeJ4wmJIS=dvN~jh)y? zgPQX7QaJ6w&Ghj}J1eWGEog5^dwbej(cYH!*0i_zXDqXMRC_xUE4&=-9q2qmdq>*) z(JqqjOnYD2R(1NkGwuJ5vd4(+U3EmHy_<7(r>*Zl>+%nj(ca5t_IBK-U<&O84cW6l z?E~nnNc%wA-_SmY_MNm3rhNwOLuenT0knN6?ZapvMcem(+P<0)|45CAviWEc;v7T! zSltB!{_)N{f%fUNPjvbu+NU{jGVN1TOr<*2P_ze& zt^I%6zW?J{(7xHlZYh+|zSV=b(f0X3`;LKf<#-qE7iiy2+n*G)@1cD!?T2XJH_YpP z+7GyG4~|LY+WZlKG(76T$7nyUB(mfQ+E3AbvIu(Y)6Rd!(1Xv?e$F}17aXTwr2RH+ ze@xJRnYM52w_kC2tpaGjM*H=lhBs*Y{*UKqv97_o{U@~Fq5UE4cRk5_&iDQQ_6J2; z=X~U`diblfD#fR?zoh+{^FMc)Fa9O}m2>ofK=LZ%w{+&B{T-cYXn#+~H2mOcf293~ z6F<@Z*(H7dr~RwbzZDv2|6b^E$v+*ftN-OPe-C6jV-+%V#-Z~cI^)urkdBrBbbSA( zGrr_IzWGyF)tSg+CoalGXA)_!(sd@KGn&q19y_^nd<#gbMh#`A^w_Cfr*HndPG?R_ zXF4aQr!yO!8I(k6XLOv2&dkFcXQ4A|L3=KBl|NM2U0MCVdEE7P&<6g>i8wU)Z91zvXASL=b@cHcI%^eroL+~{hIG~~ z@};vLo%OZ$>};S#rCB0+BiFF8Mu*NOnqC@T^k#InptE_A)=k=y&Ng(mDmZk8PXRjH z4msNyL1%k9J7~BuJvNu_>_q1*-5vLE+|y8L z3zUWX(AifU+ktnp>FiJEAUfv%4^%A`QPOrWokNB)hl+2Ptz|lg(>a#T5p<3+4xJ;# zS0f%x=a_+pVuzt~9G!FN98c$DI==beIk6}U9X%uP5}iWlOgeJ@bbL_goL(rQbH-4! zHZ$p*?RZYXbox9x7dUagn1kY6NarH$kaR9~yrkIfaQZSj_q+V%bgrOt8=WiZTtmm2 zd${>Ou>4v&H@oC@bgp+hZx~vBBb}QHddRtjj-0=2P$_PwbGN6xgU+2ptMmwXD1Q%~ zdlgin?i1l@={!K^K{`)5{~^TW z9}V%H7f2ST^CI0(>AXbzD4myyC#CZWomYzu96GPrl8Vmjbbh7t1|93Se*UNP7M-_c zye*?_KBK$i9Xg-Wu}c2XmA~iszN6;<>iO#SAJO@kj^+4?=1#^mw7FL2vm!|63pzj2 z`I3&$_B&s>27d$~o4=*=J)Q3)Y`H7p4^nPH#cKXf=Vx(5{31g4$Zy1U=l*Wi()okV zpQCJXI_MiF_80M3nj>}o)&{0+G}(Dk+rx~cuei*94h7dQ1ydkZR; zkhnt}5w|5{HDISxifU1gUE-WLARDlIrx^_wc3eb0$^^t&jCgU$TaIoX@sh;b5HCf%F7eXDD-th5?DPM4 zSxH)NiI*o{LDpI-yR2`=D-o|syfX1B(rgi0op?RsO^Meh-iUYu;tf?BR=sAMYGY&KO(bmhwQnX6Z$`W&@#e%^$Q~0O)X!GL zTPs-9n9^=byf^W7#Q!DUo_HtX9f)_7{ie`XJu1b{#9Cq~J6kK+nV;CY~H&Z(vL42fiT3*G@UVO9#iH{+^g7{eCvxtu)KAHGa z)rmO=vr092G4W-@mk|5mPZKU`Oh#TVvz6*fxA`jK8;P$bzK-}B;%im0g>u`cjjt!Z zK{_qDUAB81-{h%o9x$cQH-F;Wh^?>s=1+Ww>%Y@`*Kq$QzI$-`I@aco3*1L+Sv=(Q z1H=!CKPd0R#E&Rw4P=+@$H(Y?O#C?U6T1Be8lEJ6irAdq)5I2Q=DkV$Eb+_4&k?^w ztoc9j3&bz#Hni$0(30Dm`|&HpZxFxgz4|p`-}$lPd+Y1%PSw&|#O~YUw~5UR-}8xm z3&_TrSk8Y~pC4$35PzutW^2;;Bdswd^9k{{#Gev>P5c@0SME}*-+n>-crGy&bSKN0&1*R3V~h4|M&=U40hPIpVz}f6|?j`2XmR zF99|raPJAeI}P1g=uT@}?obZ2nX<`3PO z9A`E(F{fvB`PuZz@$T%7b2!fFIG5wxhRRVgI{ZVoWN4+PTXw8CRvl|}>n@`qz&K7f z>B^bYZPC^K58Y_=gfq}>J9Zpn$F5^ys2mN8`>WfdyE5HA-3969bmyl#LU%stw^lPJ zP`JnL0!ELvk3V$nT9NL;beE>Ph#R)3Z4=R5%yDtYB^;M@T*}ZA8oGJQ&|TIoU(RuP zM;`*lbkXigqqDnRcon)E(Os49`gB*LyB^)uoxjHDwXUSQrsGbPBXzn-KzP+h;l)78d zJ&f+wboZdU4c(pSZcBH2H)Ffe^);Q?f$omBQDg0>Vw!L4?o4-Ay1UTzp~M`f?d_{| zcB8wynIs2dJ8bI1d(u6C?p}2FrMoxXeMZmxiiR+gu`#{7AKm>;Z1kG9DT(YkknSOL z52Aap-gPxcZGOhQME6h?#1j6W8GJb12k9O`_dL2s(mk5)Q5HM8JGNy?_ZYgT&^^}e zInL^Y?(vQ%IG*TulHf%WbF}~O#AuQ!hxAk;>;*~XHH~Q5 zGo1&gCs~YS2B&8v2}oulsgTS}GPg5lA(@qA4wBh)OG?A+BCG~%2RNCNWG-V4qvp{% z!kkhvFG_oB|$yP48x#JcjTNX(?xHZXkPWUe%6aNLIa^K#WJCN*HXe*MC>`bz& zNA2RM10E(o;+y};?j(DWSeyFKAOEp-??TLz>`QV2$$lh9knB%#h%*mxJdordl7q(x zyXHeZ>M+N{6*b85$bu$0isWdLV_o2wVeD}v#}6zY)YyqGa1zO>PMl0~iiBO8b53(S z-SLcqPjVK?*_u*X``YrsRv*c^B$tw$M{$h*aVp5a*`{wl1i?0yvp%vEoAJnMT)I-)IYBy-IL^cQmfJ%oa6pKxrx+n{F_NW zBDsa+Ig(pR9wNDo(MEO}Wnwz9BCV~P9!q1 z6l?2H^*3vX_oTsYTU$a({sYGkC1W)&%^#C|Px1-L=Omwc>}QI#RFXG=Z%NGHuSvcd z!}lod2uZUV?mOjZGvVY1QVae_@(0OJB)^i_z4nX5EIS_pNPZ*vU1Nc*4F@&wC&}L= zmfc^fKwHXLqgVm0R@1Rm+aksxosiUs@kz%cMfIS2$G<0&P9O(pL36OF{6DD=ZKhxJ ze@GW3os_gpIvMFqq?40QLplZNl%%6bM;De9D__#7NT-%UE0ndkwSGD+=?tXPk=n~& zs(D>Dn@VRa2+w6^(m6?IA)TFcR?^vIp*Nq}BAsI(X+Acci*#Pnxk={{(`u%uNtx=e zfQhJ(wn?j`4OdupuwUu2pIX~$F5;LZi+WKm`5b4^a7PTDdBBV=^E=syM>0%P| zzDK$Q>5{V0yIfH^(xpk4AzfCQO`Bb6)8$E5BVB=XWzrQ%<^0v$Uh|}@kgi&kMeSni z)^v5!HQiu81tfdcQoh#iD#bdaTam6yYW1)l>4v21lWy=&dr5vH(v8)@td@M2gLG5U zEl4*b-TeP=@hzp<>{Q!rO}Z25Hl*8=ZcDn|Aj)EGC`s-7=Z=H>&JWs=?o7HX=`N(| zeo`wVt=)GMVa;uoW4B&vKZN>1yS3?Fr2iw`oAhPUeN2XQU()kQ_ai-ybbnIofd`P< zuYOCU2ij_d^dQoM^%Aiir1{}9(nCp)81?$+q=%6n?t3^TZ?7XAj}pfuRRhP69;<}L zaVF{Uq^G#%6C6);JV}rK)02(XDZBJk(z8fU^QhBF&m^_gN2!RFW@UXg>3O8*xXihO zsG$t$1*A8TUPyY08+?)D#oDh{p)Mu8mh>{xD?Pi*9j}mP#ab0zSB+PKCUEYq#f*3y*;U*D(9(TF3*s@MEWf03#8AH zK0lE6RHS}P%aYpxtwGseQJ+zl@F5_5jnwD==^I1-o1}yJKk3_I+W4Dl{x2Jp@I87N z>HB0Y(ho>~CH;`p9Q8+}n)Z`^EMc41rJs`eG(NQ+rT4%5rqe56q{R)WSHMWWcKn9) zTT=h>vrDR1o9mFmA4%=L(Eh*1YjJ!DU;?`9e-iLuGX8PelAXFM|Wv+`_w{mWItzAngg{>S<9|74Rm`aD0Ilx#Ga=Ko}qtCq4U z97h=%vp_Om0w{KBvT0p-8pXbNfYZ~FO|RKVHiM=O*^Fc*vYE){BAb~^J(Fw}$5|a` zQ~O$vwLXx|p44xE35Zr6_2Wt)pU<2d7Z357N~ES`zpFe z))XzZA=$HJ5!roYZL)jFI%Ic~#quy&muxSxgltW+lx#_|jBG)&9@%_yVp*RoCmWFm zHh1bsHor$Lpx}VB5ZPj6ngx+9LbhnZFOrZgPPW7#`9OXtvK7geCR>hdnW2(p$H&aMz;ExRR5A+i)?GMwaGRnTZe1|GR^f64rLN4DD-Z3RK*OMpSzy~$1@+lS2O`Psf?`wcVNe<*(-*%4$1k@Ws{;wB;JyUNd>0mdYpMO*%f4`keyF< zD%n|Nr;*t|A5HD)5>wV^773j`o9tY&bBZVzJMUky7m!^_b|KltE__iDMP@&L9P~Hm zU*>rEQ2&)=Hno~Enj%E?0&L`$Q~ejP|RYsW-IILVX{ZG|7P?2OwWJaKRo8B`9Ikc zWKSxI=%*Z?CVNI4%T&zg$X+IUp3L6@%U;lYU|_&Y<|^&hCVPe6EM#*2p2R%f>tuhE zy+QUhnYp01$=*^b^R%+$e`N2B`a}3%9 zDcNVv{M_-2A^%Gcex;x-=(2Cf^qo(#ZyoguV6yMYevldV2tz@8dOJ3mKP}3%1R(pB z>@O#NbNt=$563?peL*1&{tXk$s5ch9vFVMXHx9iC(HCSaZbm%9OrhN$8lam zm0FTz#|piOUX@;xUd{E?U2{NBD*|<)V)ou^(F+G0?^iC|rq`jD(u+OVrI!@FPG}if z@omKK_2@4`uTSqtdO5wr=#9`@f!=)dmZvwr9`V@Y%iaR?7Ib1E$Aujiaa`1KF+(R7 zr?-R?OFAw!N=t+VoiE$=>dwZGVG9~IP1{cgx;RJS6wQpKtfw|3mdaa+gj=xuL=)BX!cqt$#n zIqpnv7kc~A^HVfEf8yEm_kSg$r@-|572w{U^!8FEh_g36pa1vvm1biObnfr52RI(+ zc#z}4^bRq?=|e@x)WaQ*7^8vSQS{EGcQn0YJ<2`-ah7HUz2oQ|udg1dIZmK=I=vH> zN=i_$zsMzZph6re`HJ4x^z8jFufu`Bcl3Uz z_dUH|>HR>@`ooX(ej1a?Gx9AU)1xx}Hb^dof6)8eHUCM^qBJ@T5_)f;@8AEiRQ+-2 z&qIG)`qR@NkN%|ep+7PG@##-Ue*z`6OOo3E85rN6M9TZ_S_^CYlhL1w{^azv?N8r# zkVK58ude_p_rlKp)byvN?~{M$xT@(28TvEOpT#*d(x1tRnH4q2Wmfug(4S2l88EvD zYpK4@f6||e{@m&|g`Kwf-=CL$n|_IYK;Qj;ze2y}!c{#E7^w9lpwiRus3v{A_DjE| zaoMsE9ThbF4*mJ)$Mns~cj>2|#6AJ7r=m`0qE+@j{So@Pg2R$(tm)71Vhhk;h`w+B z+o+-3^`xK>roSlt73eQUe;N9V(_f1I67=Q#P4npgtmh^zt;vjg0Q$>%j?2+sUQ92S zb5^APJN=dDZ$p1&`l~3)7MuN5J$5z6)g9NMzkw5L(qD`Ix=yc6e;p%qsS?(6=K2bn zsWv+FH>AHQ{f!D4`Ww^t^Z(uo^f#lg4IlcO)89feh3^$dLje7))m~mX^xgmWx1+y3 z{iEscKz|SVJJR2U{!a9F)-=EhYl~ug2ebd*Q9oa(nL~e9ZT$9kbKG5LJXFJb(%*;v zUi9~tyj8DniqhYg{vq`Dqko_`!Tyd1=$$odBXyyJ=Q2K|_Ka&38^p6-L z>Bb*5Mw0$9^gpD3EdBH7+xH*zcWnB{(?5a!iN%Oa|0MdS(?8jxPLYfa5dBjfPaDdd zG31{~Ux)PQ`~0(ij??EBu}+^)|1SC$c=8MBU+Kg}^e>hwX}-kqQpd~aU+%;ehPtHr zD*89k*VmIg>Keyu>0dYGT<@G4=-(*Lz~GymdCO4dR{FOM>DxW(4#zviR4#YZf1Un4 z^q;4HFa5{q-#3)MpZ){%AEE!?Q29gjA1-K5`>3mWtWf3j6OK>Pf0q7J!&FZ@^O=E| zGJS3s^@2ye==hT3%Z{%YI`Jy~*F+CW_Xhp9>A&ewZxu3biFK;?o$14RUw;9n|DFVt z-3J9R41PraW9NTD{~P+B(l5k5Q!ciG=zl@~EBar`W7wrT>+65f-_rk${&)2CwlDqf z>HnbJ^8Sz7-nSeb>Hkds7w7-_Z@%aI2mQb3|4IM$6(*sW(LxcYyScge>hFOiQ; zJ`MRePiV`Cf6oE`7GqKI-&W$6SM1y zhD~MjImxx>Pp(J6DP>2>JY)q~-I;X7fnOVgV5z zBzHGu59#tn$d?@T%`4=KIxa@OxD!hlYHp^erO207LS?ZG`LeRa++e;Oxja1i@{TKz z`^lMnB?*YXvTDO<+il2KbzF^nb>on)QShB!i+oecO4KcX2}Bw$*%ZkZLz)?oPgkIL;^E%b9x* zWqb*c@B6P*`|F&ZeLpQfko*wxgUAmq1|un#4Tq8+MShs>sr+!S?IXyKRIAx-Sj-K) zm%8vVow$WPRLnx8~|4*ALCXOo{ouF3zXZ>(pY=5>C$>pz41 zOe36gmI$ZS+0@qOdPe7wUrv5L`NiZHkY6Z0=2h~GMA+q>pZpT?OI`l5F?{kX$gd^8 zlKg6qx=O;jgRYT`jm0YIb>ugYYyPi3rmmvrzv>=_wri@IxrO{;@>|L8CBKdQ4)5eP z$J32Zey1cw+(mx3%imLQoW76zL2~Ob4~Xeit?l)9yi(NkdZXZ$vQmi#&LSIM6ze~J7B@)wnh6|?ZP`OD<53|yi! z$zLP48}oH?pZ^af-Tt>EX$3FJu3X+Bf0z8d!MrPf-?RRJToW_$56M4r!Z-iL`Gova z86f&I5vmsTF6Vsds7Ju$Uz7WcRP?tJkmUD_oKF4&BL|cJNd7yy-Accb|4jaiWNb6d zD$v$z`ENxMZ_Pg#skzQS9Zlh1jF`5+85v7r=6puRW<)-mk#QU~X=G$PM&$gR9-k5U ze@1+07;)!6BIp0l9Q)%98JU!k=@^-ek;xTh6=i0ROu@(~My6q8G$T_n;?Cb!XN*j( zPGVw)*0n~a6`@?FXJi&9W?*DS?XZo^Bp)Kewt(z&*+#hkADNAjc^H|Uk+~R|gONFv zuk{?eD{XthCZ!{Di;&L$N7Y$C%}yk5p9OyCBKP9%u-G4Wn8{?4nT$^|my5f*FYfN{ z?(Xg^?(U1byTb=xJ(bMM-E-zVr&3*2t*NebIz0$pQiD>5Qj=0!H%O@^8HD!0DUG4Dsy>Ob zH)y4?-Wsb>T3tSTIOZv>Nofa4Yf;*S(%O`)f7hY3feWuoX+28otJcrVRiG6>xo<>i zV^zndCwrZOWrO=)|#ybYyoDQ&0u!Wzo@ zF^}_A%^fN2OKB%cyHVPi(k`B4@%%lM6xC4Dyr8XIrQIp*kt=@ZP)dh;F7_3`)84j6C<`m3 zvObE^v6QS^j}g;5UEdm%j-zxMrQ@yHDfx?l(utH#c9oNghn>{x$2Lg`*g4^z62(gT$KBSn?)evPH#mU)npzW>tiZ|0*e z_SjJVaY|2!E>zt4m!78dyo)_U>Di&A&VL)yFHm}MNWVnsWlFE;(gboD^A8qmmtLo2 zz4l*9Z&7-K(wmy-hj|%6>FxZI(z}%8{OuN_^gg8@D1D$!R;3Rq$>CG_h|HfcD#GknZN`Dzac|6KKo98~TJOSki?(lxLtkit=cUTM19&IIV8> zvY-D}o?cqk%i_#Pd3G0=iSo?4Ys$08Wl3>X$Jr!VaOR*q=g{n2l;_TAL(20~UXb#9 zl;_Vs{G{wpTV+3)$1IpHEiWWfvb->5UkEDu;*U7`1c35ll=XlhF_mpe%BxadigHAG zY09fmUWW4WF1ak_rgPf6*1n`u@xK1zHSW zjw$yk*C@AKzD_w&Y+r6THZ>KRyd&i{<&H*Rx$D@I!?#p%Qp#i8LPmL@ZZf`M(IaCi zZ%%nN${SE#o$~sW*T`ikuSr?o|59GtaUI8X4c*#$vSW1KM5@Jx&fkdg#@-8?I2PxB zQr=AR>YXhpZ%uhi%3Bq>UL?xfxcau5I?Hwhkd=IU#~mDP3y^Vka@^T*7em<;e^<(9 zP~MI5iIjJze1x0YgYuq~5AtT;i}K#i+{aO$08`%2&{OxPe87+%eg&+~I+*eyE_vuM z^)SkZ=d|;Wq&0wU}Q zw0t?`8!2Bw`5M={lCnn&<>4p5g|%xbUq|_RX<0j~k?sE<^Pzha)FX_()L& zD_c=K?f<9z1m))`Kk2m2|D^2u|I0f6)0xjwcIR)kQ0fcLd@;YvD8EGcWzXxC;=WV9 zuTlPj^6Qj8qwMp0`3=e+xVL@>4P5C{_=AhnHMiw(TQhr}V&as%b?2iCtJpxeH z6hPT$gz~4VMd4$$6|guLrTnG3RptDe^7oX#ar#@za{l?;>YN`a|3Udj%0DSDne|5i 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%0AuAru5 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

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

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

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

    byeO}<@Lx<#FMZ-o{Xnp18j(murZ#BO^oiI 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�<*hg_JDiBy=>K6 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 U2>D$Cbv}8QQjjD z$QA!{wf@gz@+x^ko{^_&lv@Ai?c{axnyNOGZ;|&U??t`?`R3$XlW#%3C3$bvqxhe1 zL%tpPwyL_l@;j36M!pmIF64^;x#EAmJ9!^+#s6IKKi`XdfAW6h`;hl1A3(mhnt!13 z`;rePAEXks{?88}Ka~7H@`K40|8vFv{4nw($QA!{wf@hKDrP1>TJ#w5Tgi_lzmR+= z`7rY1$WJCep8Q1e6VyH^{^zHVpGJPFsw)2HXON#uekS?ZGkBXN3Cx2Y@398?bPZj^9=rr;f%3Blx?MdQFJ!>OJYj?lg|--MYQBUdAa^4FZoaYhUlB3Z;6)t zCx1t@Z${&#$f>XMQyB`W;y%$KG55Y^?Vo=bIks=HHNf$CONp}Hy670d5c z?Izm2+>LUxjp|BbRu)}FbXC#SL{}GGgK7_|Yl>fs>bg|dF1&26Q<}+tQ(ceh22|JY z*zBrq*j3%AFjO}d-K4A9v#Yup)sSkXD>tOgq-u$=sd{1@QMXX}L|-<8am|V14u2IYVsfpGL?Mj-Gv_yM}Zceqgm@NvG&)u@aNVv7=Hlo{#Zda(7 z?Wyh{W=E>Kh}lVW=dRD%RW^4kv@6*|l0Kq)QaxErU#fdi9ZI#IZ1xx3o9aGd28a&q znqgnr97OeSs)NPvC;Pm==mDY!Qawb>K~xVeO!?RO)ee>Xu&&J`WQHR}hlm~}dbH>< zqQ@3m{*~9jagrS0kx)H>>WPw^)X^aR6wy;fPZK>|bQsmM#GD~|X2)JpJzF-zF44Qo3Crv7UeWug-rtox zAjyNGqeaJvjujmzI=;~Iubh8^&|spd@W04QdQ7HTfcg=tPsordRE7Ul;eWN{e>p?h zIhE>ks>1*3G)YSScU6V|)sp{IXQ+IpO#2+w7pXok)mfr1sGf5DPxU3ylK)+EzC!gg zs;^Rgo9b&a&+BEWJRomSeN)U^9f^#6hpIeZs_#-2{#S+n)&KY}Lq4J^{I3fCtN-y| zs-IK+g6g;8zZCsS^lPdm|I5GP=Rmm+b4y?Dx$wU#{I3fCtHS^4PaXYKf2R724EePy z`As(Gi~de^ftWu;{}la8bfM_qqW_5gTWb3vqKk?yCc3!j5`~IclJ=##{L-B}++ME# zXHN~$bx;E`E(7sOF%uQ)uS9CqvXVSht?a$D@ z0quin-;nk}wD+KW8`?LLo{dE}5$!3uspw|3S81=%9?)(`ViqdKqTLqbh`OSls9$K? z^ikqN(MU8d^K!=$(UkT~Ox}^VeQ+7=?UK|)>!Jq6VUKUVyjG!R`fd2>qT!6y-{?O=uM(Gi{2u7tLSZ_w~O8(dZ*}JqIZklBYLmseWLe^ zJ|Oy_=xEU~qGLtJiH;Y2NOXeeMA3&uCy7oLeMEGM=%b>Ki9Rm+gy>Y!Cq<`;J|#L` z^yxy|o;-o}8FHCDTV7GceewOVv_B`w^P;oL{MB#8zgS*)B|v7={*suNMdygVBKoT6 zYof10oZA^tPb&qcow{ZjNR z(XU0nDYUD9F7@Ji`;OX=w0}>npwJK03M9^>wjAw0Qd^w%pQtTD`_D4=7tvqK8Ky5v z`){K2MSmAvK>HtJ{uKR7bfM_qqW=^s=HJpx>P}7ATU)H0bJ_~!{Iw;hElq7n@k^C? z@h~m(Wki=PlaB9OTb|lV)K;L@jT%y2v8;B^(_NCb|M!<hZM~iP4t(8f~Gp^R4b{VxMwGq@>Qtc(WxoB|}Z9%QK9NxlgNo^}hwiew+bX(El z+Z7Gli|!!0BekQc?L=)LwVkQ;qqYmRJ*n*~)!jsQFI3DP)cSPzmFinj>q~8~m6j~N zOIa;>Uh6Myds7=A$)a*ji%;B#+M(3;rFIatLDcqdn>m%*U~2o7Z8N9Jr~^u0?%si= znNeKc2U9zwJkGC`KU$@97_}p*9Zv0t^5DE%4qU1D_lw#PYDcX!_>6L3@i(oww2q;6 zKDA@1ohSo`Qag^?@nyBR1!~3F+@fu2ai10+cM`R;shv#il#Zhg)b*LhuXPa{=BZ4hfC>#uKYr37fEt)nRI@7$F*^3`E}%q zrFJ>BtEgQeXZFf6@4N=CmgE}Ik)qd%UMG6J=nbMbijETPxCd_*e~aj?g^IaN^mfrZ zsNE^%u0rLn_)_;!`<&Xn)QT^AAGHst-7iP)0nrCVM^k%(+8An&Q5!4CIMMMk+e4xg zL??fbV{FH%-Nm1kmoF-aCLlMW`=h5z-E|J0W*^B0QSx$w(U--P;d)HkHQ zJoWXc%TuE+{I9PlJ>AN?qh9d8&^FPPL{}Cq_+R9!7Aj^n>Z^-cL$u(3QC&-P?Lx(@ zLw(&2U;YlQuP>jnLAh7*?PRkD^^L@AT;?5Tq280aO?^}926Z_O^-5VS@7dzJl>Db| zl}X2WsTT|^5?9nK^Uk9YP%ri>q@GicsK;gA@uQ%gP*0^lEBiZ+cD+iy#6I=*u05$! zZ&7bZ*ep9cXYM7*=4H}3wm0=tsBcMqTj~Y>i%GT?-KOm6xGL(~Q9qG-!T+LK@W0R< z%W7$MqP{crL&fhxeOKxO#qUPF;D1NY9@P7E`8}!k?ecq3@7Lw~Q{TJG5BUFGKz$$T z`*!7n3PXLc=zi4q@5+luK#_M`Fb7dTxGO)TG%uYf)x$&&7cHLx)Q=P$B6^hQ(W1wQ z9xFOj^f=MuMTKUCgkuI_q`uXNsOBdUlz2Jm2f* zQZH_|^Qh0Dem?b4)Q3~QiuwiAM^L}8Sawn`_+RYs#pS4u6-E6L>X%c$RPxKpyz>ea z{?~>79mJ?#P5qj#>un_U>#1KWqpnkDP5mCp@9jv$-%ouSb>V;gLF!|uk1lt(cvDnp!P2@s0_x+a zkC)AdL??(&6n$89lIY|@#XKT9h5Dmi$zzg~j{xdVh)$(m^1u8m@8zecKSO=G?A6od z9?HGhbuTME@e>U|w)L)YPR(cSkNQW{-Obzd|J{ujw=Wzw-;YOF!Sp|K{7O=zq|V?AkDo5ng~)-5}WYo;8vK8+qU zO8(Q>u*^GH+So{vjmxCtUTgHEQGAz8X&5v%lYOp~la%x>_TQ9#;lIpW4lHw*MuUb& zBc0;Ow%a&Por4>cOkT~J-wl^1HE>ju_LWLXzWB|K8>Ae z+)85?8b{FBmBt_%yV2-JV|N;R(%3`h5&n06V#$9RdzCYHTxpH|GzQWr`A=g&nRj;X zBZ=_8GZ{>yxQg~GP9lx{rFuZw-+9d(MB`8zCI4v%{5wY-CP@kZu5))JjVovjp>Zq? zfqz5b-zeeVc}Fyc(l~*Jz`s$#ziY4Lfzmih<}CS7_^c))JiaAg8e9_^e7ZfVyLK+u|xma|B=p~|;ipm>|#^vP&Pz))4#Wb#@aXpQz zXpE#GTxwiX?*AtSmqyh+{-V~C`vEW_>#sP8lTY+{x?eg(|Ao({{6S{MtR{C zFRmMJ(vW}uZM-d;^6$S5`S;(3y#H^=`~ODy{+~v9xzZ^A`yU$e{=Xsb{~PlDzj!W` z`RDQ}!vD^1{Z;V`m&VtUm;CSA+qpF6(fCfT5aEAA`2W7FUK&5r_=QHve;PlRqdJew zuaf*$CdCixvidvCJ~S54OlbT;v%uY-G&iF07tIZ5ER?fTKG|vfBU--vp}B~tJh+>S ziC-OA(8>@M0Sx>BK1T3K`z(NznT zYWYt9G}jPaQ*0|H@A(`A@S)c{JpSUmRPS8`IoG@}6bh@f2=u zM$@HPp=r@Hq*`7xo%d1Gmc%KOj;Be}qZ!ilB`^8kc?~xsN#Zi;xCfgl%`IqVG;1{T zBBWXJpJsd6)3JVQ)@inAHY9JB`4{rEY6}0GivP{tGwdgjY+lp={ zx;@QZXzn0$?kLGlqB|E_engkj+)a9R7u};Qbsm#FX`W28FU_Ge_o8_e&3-fo(Cjar zCI34np*c{JeMC$C(;Or^Sad&8;eWH_Kg|P04-ysrH%tE0lpiL|lK--KIL#x(9NCo& z={RC-uRlohXqqMeX&zfvJASJ+kE3~fx%tD|ddR&j7nrBxiv z(`fagdAiIqO!N%VGm8Zw&9g+$7CnbnO!Hjv=ZT&#I$ZPuS}W4LkmkoUFQR!5&5LPX zM{@+tD`{Rr^KzP((!8u_E*A+MRBT?+Hg0~o!YQxSt7wj-c{NR0{}-pAyrboXTl3oT zI2Zr1Yx8=Vx6-_UX3>8m%~9pQyN#dQ_HduJiTl&MndU9!FY)4yS+VAyG==7EH1DK& zJIy=VUOT((iOtFh%Pa6Mns=Ai=h%7Wiu%nZXx>ZnVVd{R982?lnh%!C@8$#Lnq=1N zG)L1MQ~ok4ZlX!u+a?spZ5+)BG{@6?sMsv0Ef`xYtIAOm%O~=<`7|fde1hg=nvc?a zgyxiz&&6xNf=lJTJx25Ka<*dUi?2}b|5TbU(|nR<@$zSsO!br;nd1FVaW0DYKZO?W ze+n(${}fuh|0%S1|5Ir3{-@C5{ZFCA`=3IK_dkWcC^}oTc==OKD}D~mSIVPTBxT#H zG>ex%g(+VC6k5FeDYSU`Q|McwZ;KW$e~P4d5madLTB*?YML!TNZigcIsL;0YL&SeV z^E;ZKivNt}H#9$|`K4@rQMQ$2`-8%O?e`L`tb>R_5hb$VIE7?X+rQ>Y@$Nrf93s z&hy(U`A=($LOTi8+LG2bw6>Cb>oPBz%bs%mPiwm}>3I6IcA&KjtsN!bNp$D3+Ie<% zl|=a8D*4|ve;--6kLunmBOVMYozG4g^IaO^mvl1Bl>1QrV@h!(@1k`dt-H&WXG_-qt$WLA$MNYr<`2*sN2`4QFGst$zsAVe zvH$O+HJ;WZv>u}MFs%tvomf^ouf|D|OqN7QQhxLlT8~QpSed_9KCEdyL90Mqu`{pJ zDsH_OXicLvlh#wTo}o2edY&%(JAS#hW=QgEnG`o{Im2_J&x_6~b2)3YUZgcgj>&9V zFG*G2|H!$M%~xo>D(1CvROdN;gVras-lX*bt+!~sOY3dvc}MlUC&~LNDHb8UX?-O5 z$7SBR51-QdvUo(&`iz#W|65;_)sA-st*>Z(OY3VHCF}prJ9n-m->G?ipjS^?1^*Y& z`jOVJw0@Ev;eV^-f9JdF)^Bpkg#WFQ|6MfrgIxr%}x`F71g^KA>u4&6JvT^yXdu>vF$BtLcy*8y+ zi(Z@2t4Xg4y)1ee(xcY@y=+MwQCGBpe{paM_!k<8hN6*ZEc!pD&I0O+>V4aG-zb-^u*`M;wxe@AEjj&}23ZO;E4o&R%`we_~ZU1GRyyIX>7 zZE8!ZEuyx#+RXpe=EhpB`!H?ze;fWE92adVx8c-g{;#%-RlfZYaZXXU)$)p*rM7}1 zJE*OwwwY=xscnkd%4&O9Z56fE)K;b5w`qgBJ#BTA25iD3=yM-cCh5g{s@ECY3 zJPsZY`@;cnARGh-!xP|%@FaLLbYm*Fu15+DPce|1KT{-T2?dm%vM*8~;1yayS}}fmgsQ;Z^Wz=q>?V{k8Bq zcs;xU-Ux4kH^W=tt?)KD7TykRkf63Z;W&5~yc>>(_rQDMeeizx0Gt3HgcIQ;IN7n& zsvoKCAxD%))b_aA%>UK)m}AQ&o7F#Txx;p;+DuW~r)vAmj=`WETi(ynzX%m~kG<_Hl&=FtZQrQv z+gALY+Jc4p!4%uj?iBD-5Id^v7q|>Ahb!Q(@HhB7{KJvpPw1WtxXJ%k+dnwQzi=h| z&lp(+t_oLkWOApkVOu1!rY&qRYKp9_NEb!cQDiGc)+M_hTpw;g3xXZshP39I+DMU( zt+hgB0ni$li+V zq)0bKc2;CJMRuXmrVY;s5&S=b|8r)fpt~aYf5iMh9N|RvQKW~RRwDZwPXITND|ukpZ=s_24)q>5#(V379qEiB4y$VtU@2wU>!DK6CR<+AVvDv#aHA= zcoggl`@y5(G4NP;oFkJT5Bn=Jprs6S3N?dCod8dSC&829DUOt#3QtpHNJ}{#e6Q8Zf%Zi+%$aqE0Rpb&yhAA@K9%Dt$Q{;Tso8A8j$4-$Eid>|~h3F$q4@R?* zQ79Li67Ff2DsrbHmnkwvk;}=Bwrp@Nj$DDl_&;Lfe?_i#hm0cEz-!@k@OpRyywQ>1 zCPi*0xCPz{Z-Zmu?av8&UCirl>j`^~BKIgVNf8_WD{`MA6BN0h_j-2zf%I-CKYg)`wSI2+D!B$%tna|F-Bd2qfX!3*$3_>#@k4!Tzq`9+Zh zioC7JLPg%__}zbsysAjhbH@L{bIHgebL&*2yFOGkpQ6#1Iq8&krm+`;vu zB6eC);kui+c^?!ujmd0JDL*QVTxR2&;|$8(w~X$t=pJ_8 z>6O*(ZmQdMQO5sK^M7l^*2dn79-!zxiuO=+Ulja5ivP2gc;nGk9;j$Zj<@1jkrSulPtsCyLsMA3T{eO1x>6n$9H`xTw2sQJI5 z6X1i6!4~1;Bt<6^JY;&fl^;>`WknxV^a(}r|0w<+&gDt>&_U5Da4MVzpMp=rXW(== z13n99LVIkX=xjJg(Rl=O;dAhLvq$%6!^-9>`U1g=E#)N(=DGFx3O!!{7h3*9hZM&icR>DqCxPn zDdF+*siJ==`kA6XD!NqBZx#Jq(XSN!f=Rx#%HUn}=+`K;#{DoQsD1xe(UsJ2 zECjuZae9j3|FL%dA6rwgbroC7d^NVVO%+?mTISiP8D?xf#qj@_?SbKb80(>Cft71E&@6t}+4aLU)t#-O8)~dyULnkmnc?OY`9_##ri1Lq{jTewSJC7ISTfL{UH7y zGyhkNlS1q`V*Edb|66K+Vgu3f{}}!sI|1cHcoIAro&ryGBsdKYfu}2W2EkBAf-~V+ zik;n3&Qa{#Ry>UCd5W3;E5`W$`Ty5xi**zmq1Z)=U5Gx?>R*i$kAfGsQ!Z6(jAEC$ z0h?l%lO1i@a38xuv8xrk68)-nI%l8QwWb8;+}QPsyRCME;_eW*QE_+d+@!cWzHV0R zHpOnCg^_3~ z6?=%_0mUW|JP0Q`5=?@V?W4QujM+mm#U8Pb7CZ_cQ|xhqCro#veMdKzb62LZsftar zqu!a4xxrJ4J+0WMian#)V#TH_wotJdO#7^2^Awv&JPXc-bKqR~9DLr<8nh0~hcCbv z;Y;vk_zGO$7}WFeRrs1>uM@lh7r{57^npyY%_Y8p;<9}>-r;}yaC{?_j<8cZeG|pER(wJO7XGrg&WO-4#DT@jVpZ%dRWq-4yRmz4?E5wG!W3@%EIAUCVFgy94{NXv8;Umxj(~j}?F?v}82^u( z|F_n|(TX2q1z}f@RUH41oBxM*4B`V6|3UGAiceR3kmBPMAFTN4il3nP5XDba{1nCU z|G4>oYipYSD{kf=JUz5oSRc+%{1&_Rj1N^D^N*iJrTM?&=df>_3x_Fwnd0XWpARp9 z!yO4mD1ITqNO%z(1uuq|z)KzNtZIAR<#03{qxe;dU!nMw!5FO7!>bj)*#=|rYZSkh z%Io0u@CJAzyvfm~b#!-Eto>URzg_X$SeCK2?BR;N1LaOr!eiks#UD}pZp9}kK3?(r z6u*a>d#xtiC+|mjz?86^2Nj>J_(b$crU%!O@rO_zHYFH8#2;1sNyQ(tv0wagvQJnx zJl3Wt{*>ZV(WjXn_UdVrXG{rOo}u`=ia)FP0>x)4K2PykiqBPiHkEU%GVI%PD9@V` z+*69rSNtW#UqFAcUFFLtHvSLaj*c%>{0+rlwIOBvHL|Z;Haw;lDgL(NZ=%~pL2D`A zL0N1{xYX|{{<-4sEB+Cw4;259V2Ra)Yt`*$pDO+_`X{Cbca!3up)55exJ?)TLh)}D z{}TNx__bvj!`taQ{;lHQp?`0BxDJ0*Vt>VdQerE`e^$cz>Mx4_q4+Yze^q=r^((AC z_%>GD%wO@}+qLkg+np5u%Ppqjf7`-Z@Q>pE60C&(8565O?lUJ=BVOH+U=1bKBv=cs z-O|@lV%=7}o)YT^vAgA>gp}As2{-=lsKkcWtAzP~xP24m|4M9ZO0ZoLn<}w|5}To$ z|A%WJ(HX`3KO99TwpL;fCALwbs}fz5*j@?zKY{;;t?j^6JGN_QCna`O0{>6o|H0K$ zVmB%o|A*6dQ(`|Qx+}4_66XI(>}Bl)`)~sPPvHM-BRg8%2t3h4iINfrC=pTOKqY#) zy-|stO5pzq{69Ee5{D>pm=fmyO7ymtgL`fX{6B&J2S-67szh3em=c~6j7Sp+s}HUw z5_SquB4tWgpHU*OL>4_~dN{`dO3{?yn^1|e66YyVQDUGHHvU(_hc#G-{8&W7e*Zy< zBOt&3kl^5()yi@TNSvd@xs(kvJve3)=PPl6ozvYY zH!)m^kxGo9=0d9p*W^Vgqf80c;U)5JSK?B6J1B9P5??BDxe{}g7_G!jN{mtBIwh`9 z;%X(XWZJ82+Hj87pj>N8xQ}uFCvgM%ji!h5y;+HwO5CEvSS4)yuf%PZbt}!{+u76Z zfbLnO+v~=`yWrh$JiG_q3-5#XLwf~Oi3#vQI1x^AB$%v(dv@t+9)^#w?H;ubnE03y zkE1*RpKR$<$WB#a8v0Z4=~ng`C8ndyfX@ax@hm%!C-DEo99z=BdlSzo@rn}9EAfI` zGfK=;V!mYqS4^1yEAbLE|F;HBS)jycN-R|3btPU!G5-(m$|iUzD6xnJ--K_$x8XaE z1dEk;w-vvq#QTUJzz^XP_z|=Xr^Ltb6Zom4{h0?YWwm@xPrk68g#G_Yo}21xd8;e& zjS~OZ7$)KN#_yFBVP(j{O#hP8%q2uZxtn0(zpLi4E)Vwob0V;N^s`#){wW3yfv-TTMMpj zS@vXi9LZZ(-g@YE|HoYv5KG=>@;b=tB+vQ3D>MI>*U@T%@40xq|Kn|fzNzWKQQ&PZ zuZz4bU(WZ+h^2%G*)ivGTggb93KG-v07- zme*b0F7kGlXRAV<`G2dOJy5!t5*(-Ap7QpQXZ|m5Z_|S}h&=OudHb0X_MwNoh`a;j z9VYKUc?ZkuDbLK`9zgIqtGr(F4zZ^I@499WwKt-@-j?D$ZF%^=hySxbhxdHEn7oR- zxV)^qguIkIkGUtU@o|6oKU5C8Yf|K*)(dbp%RJBthC}?{yO4M!H2)_UW$!RspCvkPu|t?uAv714-P=*azEZE?*@6dkaF=&1UFkdftz{wzjqt@SkuETdxw(l;JQAb1c?gp(WzCR^Y}jNZfY z9%(Jnqw=1R_ZV$HZfyqVMDIzIDR3&B<|dK%6nq*!1E<3o@L4z$&VsYy95@#~2cL)Y z9PQ5*;RSi`$a_)VYw})_w?Llxzr0r*!#7>Mg(&9#t^M$Id2h;l1AUR{VgKJkdE1oG zF&4}FP~N-pK9Khw+4n8WmAh-L)9ydWTO#kHRtv#S^0C!~Tjx`Gf64ny-gokr%5y9H zb9v72&Hv?n*{w${U2{7I{yC|_Zi%hy4Qq~t0}pzlB+AZmXd2& zP15{7oMY1bU&(b$`EEVp_3Zvn()?e^4NP~>Wi0NXWJAdfmE1|mjg;)HWJe`8CDlpE zjS0;E!?l;(%yz=$=IC3P9&D-PmP&4~{Q4;@8;{Us!GU|>hxf{j1lQsVjeKOfy$$i}1mE2Rwy~yJK!PzajuaZ5K z+z)+!n<{X;tc5Ys((^RTBSC;{U-FO7b{!lH~EMrT$hKoNbT+e@>o3JQSV@&Ht5T@Si+~_*{tpC-MIz{+~4eCpA1A=Oiyw z@=_&7DtS?OJX%jiDS0tv=Kr=%to_TByjsc2mApbp{69IyvcdQy$@o8cRlE9Yl)PTa zYnk>s)5E>`29z7yRhs`R$w?u3D>2W1lRW=T^87c+^WP-Tf0N_fA*mz}f0Op`SIP14 z9(XUjPsuNoykE%|lzaeX0(=logp=T8C1*3!hv36XKBDB)N} zKB?q1C8sDk)z%>^CmbXs?Gk`Vo>B5yC8q~dDLKP}z_^k#DVSx79cXj-I2S$#pNI1t z3Fceio|h$Gq_;1@m*FdL0bHmggZAXBe0)vG*Oj#4y^?Pzxk$;kl(g}`_1V#My98hs zi(AUOO1@{Y+mo$;@qd!>f0FTk@*^b~@F(5&vhly2BkV~0RLP}G@|lV5W^(d#3*1@N z+W8WGrIgz!Un_N*lHVxh9LAa6pGxwwT=IKreo%6`l0Opv1b=oU_(jQOK^!cCk}H(_ zmDF$W_aLj}AGT3!zJDpTsgi#a{{#PpE8%~})GA7?N3g0=y!@Zy<^R+gh`j%wT8nsX z$ov1PbzL0JCAGd%T>AtwO-ZQ^RPz3RY9r!~uoGnbpW4L5trj*z-yHJ(f2uR_me9Tb zQr(r>2Biz!7H$W(hdaO>VOO{l+!^iycZIt-66~(j9t7P?VG&xr+DoaTQhO`a zQ>lHZ*%$5y_lG^;0geO*THub6)Ioea81{mPz(ZkgN4F7`I!vjS(3P=oMInKCHnywD&&=no1o(&<7p~kAi(+KS#R? zu)XLQcq}{)9uNCF+F_m=pwvK=L2xiU0iFm?g1rBkI)(UDNApZ;e~41oD|I^Y8A^>( zYAErUFsM13_#8)qbCnv_iqBK(e8daja5w^92uH$;9PO<K2CHJ|JY@J09%d|9d2lzK&} zg=XNX1x~bG-Qrin^K9yMD!KoYT15ONd<(t}-+_zayYM|nJLA|Qd;o(zdgMgJUr0l$P_!LQ*rj_s!U4)J>%?Yoh1>PHnfQ|c$>c2VkQWiC|e z7o~4dYMIjeE45r{mtCRsno9ku)W1sorqmxw{chb3Mk6U3|10$u{2Tsb+2DF7wNmNT zm9p`_(yKs5IBD+x1f!Jn8de`%`={4Zx`WbdE4{ALjQ@lCA!)7x(v1JpoJrHNse)^k z^oB}zRC*&*f{|gm6Z2yHpSJP8(sohMn#<-&Z>O}4|CR2nbQh(!B;E=#{!cUhXUL(n zjsIKo+Ft2yO7EcbE=n{0Pj_Xio#4(^>5gk_c~`g_Wc;6I{Qtd;+?4LF^u9{(NzC{^ zZR3BX_i=P5dSV;@hx=H%htdO;K0xW5(g!LXQM#wnhbny#l?TIK@DQ6SxL!#2MmY=~ z4%;jnuI;GONu^`xahQO1|HpP4>rV=%VFqR$!;yA6uXI!Cg3?u`i)2f%3@cU{Ze<^Z ztG0BVxMA7Hej`3Y>3&N0AwCiw1^YU-S~wcz79>rEUDL z^cC<*XnRq3XDodU%C+!1c)exAt$d@>-za^P(({zQS?PzBzD4PKl)hEzJC(kT`mykK zc!y0J9!KL)?t*v2@s7?}rb-30C8N*unZd5l(`W;X{t0KcpW~`WdAk zReFljkCA;GJ^`P!%5Yv&QKrGC;M480)0LjB^bGW8;Y>KoYQi-+2W2i~{GYb*e=9p* z>Gzd>LFw0&eo^U#O20(q%kUMr!0N;P*fzDdQ*0SuSNd(G-ymKD--K^Dwzl#+D2w5{ z@IA{0_cqfXD7{qa50!SUEg}1nWy5)WjPeQm6nF<>OPign@ccp(&+L=7}f6_lO)z9!3$JTt8qpW~|r`gdOzP*~)#7QOy69Sr@Kn*}zFM z8z|FJ8KHN88^VpOCfMgQolrK0_<@du11!7ZX5ya8oTm)_pTYk#z0ePVhr-@&_g3aG$oN0gMjTP*G-aa7 z^i?LNOir0NI^+M0N1TKy$oM~#A$K#dhPcQ%u40QWl zk<4He#{ZcU16`SulwtgzVf>#tHLSP34WXX#f94G0q3}#-<9~v)m9g=^GUvi@{Lj*z z&zipg4u>NgL&wXERQ6D1E>h-0WkxA8QJIUCxk;Hzl(|ZoOO?4?8T>!E!zUyHy5nk!9|* zIC$caxl5V*l)?Wq=Kspv1Mjt(U_6t-|16l{1r+S*XlpWu_?ekTQ=b z^RQ*z%CyQy;bZV|yQ-2uRhg%hndWLbtr4sZ^M7TYfz#m(_$-|1R){jQ z;A}Vt&V|oGd--3Pd2l{_0lo-df-gG~yrRs4Aa*NXnOBv0Lz&l@*Xxd!vi>YmX0bB( zf95Tex1sreYpdb^8S{T--iIGpHgu;Y$~vq3NSR-haRuKf^RY6YD}(=M@c)eYzcNd0 zs&F0R{~7#0^A*{zEgL$C^Z%ce`40Vi_yaWmZ~2n>f5(}N(U&RXj)mpQ{GrSW6#PH) z8}aW}8TR&1l)vEL@Sp$7@^Pgy|Cti>GrOv?yD7VxvR#y2UD?jc;{RFme`VK#YeW1$ zYw!OkYd`*@tiAuEESLFN5qE$aD!T>2M#^?1=;TPSG2BGiO$j!Gn>*U}a&+TQYjaEH zxE0(Q;{U-j>+H75c2ySt&*J}C^M7S`bPS&gW%2(k{-522EdI|^4`p{(wuiEND7&|^ z-N<%__?Kito==Ksp>3-SM~`F}Wy$R40x+TE1O3zz#=SJ zO>it^D=1ay!%GNKONospN^M7_x`7g-TR-8W8f9=O6cC^x;3QT7>SA60gWviN`YaVnpHPg;F&KFUr-G5=Tg zDQN!R+E=G5J6qWq==gtjCh;t*3FkNmWiEUUK5yCJe`;jsEBl7BFDSb}*%!&a1Yd@) zSY^0ZFGP72;{RFvKb*@VWfv=p|7Y?4EdHOx|AS{1S@Zwa@&3NDE0z5~*{_uSP}xtF zT|&zrL1)fxc^Us_&HsZwAbzIoQi9JR{-6EQYJ!nN_G@LAEBlSIKPvkzHTZuP|IeEL zhwmO_e?U)evbCUhbEKl?ZOKk#46hU?@%VuJ4MqaF4V3GsoX|VK4dF&s6YPz- zPAD70P2i@M4g5T}xpLbow}o=sDA$=R{-4{5cx$T+JTTYA;$XYywo`5=O0l*=ktS1zYqSvmYaS70jqKZpMZ$84^Gj{oO;V*H<$ z`PfjdNr3<7`Vb%K*qVD^<<3>EpK?Q$JDTh<@K|^pJRbIUlPEU;4upf?V0Z%Lp>Xab z;*;Si@Kksj90E^w?6_pPa%VWAoXK3yf@i~X9D`$xkHeHZkKlZG0UYkw+UqVHT)B&>yaZkfFSDt_^*tfY1wcMU#;8?%3XtgExZn1Z#97r z=Wax~3Em8Ev21W`=5AB&4#cs_-QG^WQ@JOU8%OFccsCpm?}7Ki`{4cX0XPBT|GA08 zlc4#(au30W;Un--_?RQXIYgzd^zObNGMG{J*vJezjA-Vzu@1N4c@`X{j2g! z<#WoftNc#Nuc!Qm%CAq&1`z+xcW`m1{(Vq3f*oNei2vs|A>I^j1~-RWz|L?>xE0(Q zZUei(ZQ*usdx-z%cT~Qs`)KAL_hbe!) z^5>cIKk zTa>>_`RkPrviN`gS}M)|tyk9O4e&;I6TI0mJhS9)MY#=*g|{nzr}FmuZ}#U7b9Z|r zKh9Q>d-EiJxAK#fAFuoa%H#ie{6CNX=gt3HNA3h#!~gRWiOv5*XUIRK{Nu{w|M^GA z;{W-_tR^_?<)1*u|MOFbr&>1jji;1;al+S zc9n}!%>R{t51Ri6>y3{eDv$r?&Ht5mDaVhkCS3MURk%p`&s5l7`K2m2WBgqCzm@+& z`Ja{lQu*(c|B9);hWLN}TWcX0GvvQV{{j98&Hr0#{ukwcQ+^rxa<~HiYBk}0^*ajw zpU406=KtZ@D*uo2|0(}3H7iXIys@x~3Tvuh{;$Gn5dSZj|A*_jVE(Vd+Hf7Xu4RM0 zqOiUS+o-UC3Y)7S6*{TVftn2={$DWv4|`JB7=07CDK!7L$09Zt{J((z7x4cA{$DWv z55F^2=%T`IDr~DlR~7L80{&mvffjbO%HU~lVJDQG;Vy7j%LZeQ!tN^Ur2_t6=tj0X z+|z1;tHQ$GDEq*D;eM74Tj-&}F)AFOLRy6bRfwq2Q-woSIEc!FVJ~=yO%-gZLT{AA z;Nh^%vcc2&LR5vg3Ncf{ZIqzKgGp%q-&+3}6>2JERVb;DBb$c>ShUKpw`G(HtU}+i z;e6{V9H~MBy$O$ieXJ(9$}1d&(iirFM_V>{LR2_bg|k#RPK6UyI9`PTD)hH(Fmfmi zq<#<_3{S9Za0C@jQelV+C!?PNPlcyhP1wTeC}+T-@J!2wYxQgu&R5|a6^5yBuIb@a z=UE)CfeV;wI2-{lgd-hW?Tk`kp$ZqPFj<95RJcWjOI5f=h09d9QiaQ@9}UOAD{R_u z{al4|wJE`IUAR_->s7%2gI~Zd+(6BZ@Fs}=hdsPig?m-FO@(nPj3s+JyaV3p*xEDi zLb)4`hvxs`IJ|J53J<7&|A)uv1Zp0H6X7JQ5BIT$RG6W{!zw(j!Xqj?slubwJO&?! zPgs4}+7y(ja2kBdvf;k;49avDb=Yn9=4d>&;U#QzKC z|KTr47hY1~6%}4KC3p*^VE*4)idR)wrow9~e4@hZD!ik@8?>_sz6sxgZ#%a3ip45? zr~>|9!2b*HQ}cn7oUCTMu$CeGg`CD-Q|CI`#p)ZA>!!O{Mj;$Vkt-=o~ ze1mTOufliG+^@A|e?<8S{tSPyY;fgLSgzt~Dy&f9KNWse;V%__qXz#k;Qxg`tv+0z zf0O+O{tH)HHaPBztC&(;)s$clEUvC%2Nl;)aa|SHB)b+|8?Mu?ay^vw;RaBa4eoLm zH&n5siW`{{w%m!Djo~J6Q_BX|CdJKFSzE;|R2rpXXB8K#xTT7xskoJjX%)9taX%He zQE^ulyQsLMirdn{c5r)W{vWRAVpo)%;LdOt%Z5GKO~pM`+#P)ni2oP6TTR%Xz0miD z`@nrI8yqji{Z%|n#U3gitl|M=4}?A8K~@=fLa`T$`M-*X!rqn*j-%q?D#lf8Lyy2H z#Q($ICQv+>gek}Hj9JX6c&v(973(VIR4l8A{}&5X7GcTigZ-gcL8(F?)+`&`mnb$= zJW9nTI{shmLwuywg#GD@(hnXDk7<`ZPQ^hg9uG;+a+xZjrNT;T(7_9A??T zk&5T5I8wz6(1*hj@ItEzx5Y&$qu|Bx63d21%4I5Euj1t@UZvt_vSZ*C@Jg!;_Z;(o z6|aHU!s{#>uKycUyj8^;(Qkq`!&|H-?8$8?Vl;2uKp5h@>rkHN>G`M-)!!YObnoCcqQ zPs3;6bT|V(3unSva5kI+=Q`S-yR<1jui|Se&QtMa73Y(E0lo-dva;Y=Rq+*+1#lsJ zwO#gg6&I=ahAF}Lq=^3)@&Dr6)W2idaQ}H%rM*>rPbKF<@2mK;iXW)>g^C}l_=$>3 zsQ(CBS5^GjrVaPcPfYRqRQz4V#4MXO6LFJXs0CVJHQR$MwSisv{EOPHc@Hg zcFLyIYz8-nTUa*O&r4gXw3A9(skEI+Ta(=ec7fYkW$;v`v^~lWa7WnHvf+GpR%s8F zc0u12?gn?anqUo=x}kK3d&0de8@8~IN=K=*uSyA(_EV|1O8cvHkV-wMJOCaDd)idN zfAuOIjM57p0uQxp@NKfvVJfw$bhs(OnW7Y-CJJLPZrQ*yOP)$)m69suR7#Oe!wk$? zWv~yF@+bvZg!sR^2Vz^iqEbVpDzOi1uU@W{H-eHyD5jqa#E_gQ_Z`lR?iSLE?!TTZpUz*_J)*73r(gKwxsWe}u z$tulJ=^-i~hW!7>6950P#Q%RR@&6x7{Qt)i|NpTx#WkhUR5%Sj1^NGvCHw!6Douwo z90{IPX(queINNl0#<9w|%=bC?Je=nkj;>4if9XYZ^M93IhObynxb_yRguRzuRp~Xd zuS4^Hl@?iLc%;9jk~4Yyzw{2-#qeFL36J;pQ9ghl!X=gs_oe@*@@gu5tkQCoK2hmw zl|EHzsY;(&P4KI;rO%n_3-~4c%Cg}R^o>eCs`M@Tckp}ogVlt4^-m~2!(ZSs%Z5v_ zLZ#nT`W5{*)5E^~p^`KCKhgh!f5U&QCR|r5QSkpV{$F0zvccX}UR~u)RbE5o4OL!K z<@Hov%j(N(!*$@gRv-9M+5BJS4WM8L%LXo2-Uy{5>;%pKRo=w0)xu^fcTstBl{>3! z{vWD(s{6Bmfs=TerT~*!=eS5eA+|g=+tMBqoC_BSlp!t8euFAWse1pn+ zsN7%WZYoDr?yhoAmG@M6Kb7~Qes8!B+}EZJ_K@=aC_NzlUpD`5We-xhx5@{T?FA2k z_bgFVj<)c;3qURv~UoH?AVae^5Dwkme zR-q4Tunrrr36Fq%;F0hs*w@kREh_i3ea2cohPfOI@&7XZAFitbDvwlopvrENK`NiD zviZNtC%_ZoNsg^$$N$TxqMrtbST^{dR^>BPK3`??f0fTP-Tll+`7C%gJV)ho35LP* z92vd1GW@?hoN4j@@`ctyFrF-5r1DiNk5c(^l`p2|5_l=R%qoMUuRIzB|1abJt^AZ7O%S-5Na|6jJ> z|5y22_?^nXsrSrDtdTxIt!09*_9e+TT(y$)d?e^;3= z|62T~%6}pL9oD!NW%|D=uO#@-SXl+~GHqow;?*HP=vrBm*!})D#KL4|0^d^b22;yo(fNcL*VJ~3^){?37z@7ZF)952cGNLnhXE`y~6*0uUufq zQDrzBp~`Kl@c-W{BT@M0@0C%ij8Vn@|2yI(s__5cEBycWO6&i>S4P{ND{JivRqWSv zRk;#gr3(N5y>bm7uXVIPXEIiEy(%{l+^EVes@!D12voT_Xo~n&E2d@2#=_fGxr2bw za%CLxU5*5It1_P89(b?mVc+ooiuu1P6QKEj_yo2xNtGv5nXJlVsysyYVfYAq)GA$5 zHtpjUFY8SFq$*FVGKF|5oCcqAZ0+ICpiGDOf5rSiyn|htrOMZ;%vNQQDsxm>pvqiT zUQosSUzO+KJUHK`3j2WnSMdJ|{$IiWgAsLQp(?Md@+wokW>W>%bd@*SweY4YAF1+| zD(|WCHkI$d#qeFL4Bg{>ln>yCaEWDuvwy{Pa;YjGqvQV-{J&!UZ&qnbf&W*&ApR15 zW!Z39zES00RlZeanJV9@^0O-6Q}YA-5&mTL;nMwLaWHPIELY_ZRaQ{*EBp=q-md0P zl)vEL@E^+tzhPBbsp?v){HN-ws;**s(C6xER#{ygt^wC{3`gVDwN>3f)pgLxkUg!srA-?=7p`ut zY8O@U|FF0Ce|0Rzhur0VXf;{R3rzq%`x_>Jf6N({zf!m`0V%xV%PWlFGbR5Pj`r)m~G2lKE1@&9Ux*na;<)e7YIf2#cc zPt|_^N7XuPz$QEb_JKz_5*(#!UxI$B9z$@nrGnQ{s>j+f64-n7cvbr|-vMwS9OT&A zA5Kv9231c~b%d%Xsd~1mC#!n8s;5wSD#ZV*Lu{(x`m~DwSBH|t|Ep(NHeB21sCt2_ z=aL-;&x7Y%O}NE}TO2$Ws9vb*6{?O@^-@(YqH+|x7+zwP!8?1^%TO+dqv06K21jM} zN>#5`^(s?>@k#X>YOaOX!RsyiYOqajRP|m}Z&LMcRc}`Hc2#eo=2mzc9BcLAa@~P) zCmaXwvMg5|d>pUpJ*I@qc%Q0|s(QbwlT>|xf(h_JIMFJ@<(iCw|5qO-e#Eljd>>PF zs;ZBpKLMYFQ>-T3(9=+!f=|O|EF1P@hU#mm`mAbCs5(>CZ&aP7>N~2=R`nHC=cqbg z)wxXd9K`>t^Q?tngjRh4{YCf^eA%+$@v=bGH&k7S{wjP8zHT+aGt=rKlsDm9@NLV6 z%eYw8PgQ+a)g`LFNA`XA0W|*)e?hnU5sEtzIG@D-tLFc$c0N<}b5)m`687y2D!+tZ z!LQq8zg6`&Rlh_3Ue#Yz{ek#L_!IouvDMl#l;v;*H2-fMO~1=`2K$G6sro0`zaai! zHUC%jU$_$fXY|eg<#W#RS0i2>;{X1d#B0H|;W}_#i2wWM|ME9*v_JR0x8DI}L%0#_ z7^H|dmcNDkO^7#z_`h%dA3Cbv8GTE*72Fzbqnewxi~Qf@Z)@h`ZwL7mCVvOw9p$_J zbd~>_{GCvCmVcW3UF07v-*qo0e>eFD%HLi7KJxdFzo-0e^1HiYJDlC0`*ya!m;Al$ zEZ{b!+mqek&EHpk5BdAa-`{n{blb{N`3G3QFQ3ToDgRLU2g&c{+L3>-rQCNX{X;Bp zUz>H;Tz+r)ZSoJ3f4FTscM@^a+OkCCNB`Hd^&u|5EI%PXE8ml!a*fDOT2t3>Zt551m#j@^p03O$ugE__epP;5zAxX#rFLt@(Y9klzWw+= zr(J%D&hI0?ulytBA7!HZ=8?;~)#85N-tT8qSTAwFSf1>=8<)0K}>GLTTTUSrDz@{A{-_7oH`B%w5L;i*Ghsqx&|4jL3%V$G4 zKeu&qj{I}2hwf&$TLbPTQvW>p7s$8qzbUr)4J|gG{?)oT|O^=x;5{%qpj_6^6!^_ zm;8I=-z|TqVD>-j19)8#)cpE9Sr^bDN#@ zq_b*QskSBYR&Z;$jcPqr>q5M(YI~_>{?EtlRm1;lJMytB#Q$qM6Ym0dg}cGs;U2IX zv{Qg;dpZWk8XxzD`>3`r!G3Um*aIHmNdFIP_5UE%eANzCEvi~CY7T*i!roSIGdfJQ z!wK42O2h(Nd$x~}imR4r#U4r$@)Mx7v}zgEvUdF1R5_T31z3b7ScVlxJ78;7JC4E? zUZc&rYK;GDP1P<_?FiLQQ>~9`$EtRuYW-9@iWd6XRPN6?XYJ@#3&#X|i)zQIc7kfh zt2R)z{;CZycXGvUPj>rlZIEh%?I?C<5Vt>DpHEcn6xB{r?PM!+|Bllwc$hjhbiCRS z)h{Y8R_E zLbZ!jyHK@}mU1gFY+;mrboZ#O@)CHdDeli&yPOp@8jgWiz$+cCCfsUQBVGfqRqZ;0 z>){RXMtBpv8QubKRqX-QZd2`U)yAqePPN-r;{;mcznaoMy}HZQTeodT8n4=Ys@0-Q1v+KEiH*_L&? zfyHxGdqFkE|F!2)Z2YgAf|JPop z<_&1$|L_XB#`wQxS8a*a1lJ2S8|bRW_`hc3 zf7L#m2S8A$#t=bQ&eM9B9knw-bos?bsM%5Vq*M1_l z@xN-nklmGdxoQmWYb#W<@xN-n!QbH@j;%HJmumm1#`wSX581%XS6WSQKcUX}zfRBV zjQ{I4{_pr+*6QnPs-9JSE!Fo>eQnh{tG_yq>K#;P{9kAMU*CXw*|fo0s&9zG z_`h!Bf7Lr#Hdsq_#{YH3|Mktt+W24fEv&}*lEqu9z8%3h7woZQ$1mNa95$8 zL{Gsq%vd(~y_b4U^`WZgRXGRlid8vs53c`q`?VulhOEoC}A+^Q=DX+XX1Y;Rtx4WrHWn^@~)$ zO!ZOd7sE^7rB)O6=W>+Ma16Y{vcbDI^{Z6BR`sjVuQ5H`+pkmoX4S7pzX9F|Z)#U_ z3(BqVHaOO@Hi~w8+8ye@QuRC4&m9Zn)MuvZcd7Y`>UXPgwCdwk|6BEYRDWCbdsTlz z_4`zRNcH2!)=s!*K1gd5;UqZOvf*(Q%KN8w}eajOaU+b30j8F7m0QwgTQ zr{L2tIDV(Qf3&Uo4EQXZ31`9Ca1NXcpM%fCd5#40RezxszlidZeROB%x?B9$RbRjy z7s6NJYmVV_#`+s5i{P8k{J*ul@2LKj>WfuhqWZgJ--GW%{J(DgZ_iU~D}1E-XR5o& zUHmcp1b*t++SW@^K8N^!{Y%RRXS({=s{gF|H>&@r`nS}42fv3uSY^1+{A95^?b^J4 zQT;d7mk}?AE8wq=tu6aI${+Ag_?Kma|D0R@M~wqi|5uF-RbQ!wGw}b^SVN6ftg?as zH}L<)>NZtyceJr4*|i||e;VspmbYsV*HdGC0{p)r;tp05>`{%4)YwCfj%w_zMklfx z!%g6(5dUv%?r!&~u?6f5w}e~4t>HGX3)~iN2e*eiz#U;%xRWE7mab*|zp*QG+zsyT z7(U-@bW>v=HM*nk3Gx4i`G2?-8vCN}2lt0PEE_KAfoi1G=&43jjf2$at;WIB;QtN$ zzk&b%o<_(28;29){|)>f*F}t}5hqAM4<;RLp=_(A)$rBGs8LiSi;{zRSa1wotAYPF z%IFnXwQSh)ni_r7sG~Pv6CPnT!8cqQ=KpFO1^Ytt|Ik+($EYz`jbqigSdHVDbJCH{jlNR7b+C%_ZoNsi&3-#A5$bJaLijiGAb{|)@VaXOV}SY@zRH_k*k z3!V+nv25^$Nn@BABh)beSL1w$|2KwPP2gq?^M5r)!i%8!e`~oeQR5ahE>+_?H7--* zN;NL0W;7fFudw>CwX0CBhS$JrEgSrPSL1q=8{m!bCU~=Bcoa8oRl`~OZED=E##qzC zmhYevH)xC_zN_6-3jW`Ciuh^EF6&G@9nOHy!kKC;QezhJY&Zwbh0i$> zJg>$)g8A?T_#%7>z6@W13mgd+s`08CudDG|ptM%$8^L}>&6}2T*Kv)v)%aMAchvYm zjm4zih3`T0|8O+kF#lI$3H%7!>{`dpCu)vU<5Tp{ApYOL{~KSRe5vNuYJ6qqtj5=B zI-~eT%?@gOi^93A@x7XBs_}ywf2#2#`cLp@HCCwc3-K~Xg5|bo*4nSou5H!$9sc2H zf9|eP<1duI;Xi8H%^Wq{-%5i2)Lg{{)>P11b2ZbOtHU+IlqqYWtZj;YTnDbJ=6VF{ zL%y?bS+!c*5S?HBZF2Lc*$HK1xQUv(sky0|JF2;vnp>;6xtd$5xdqwIj`ruS?weZ$ z0s1y-Zl`9KAgkuKt$A%vb_dhl4Fu~(SGW`0S>g_Fqh>cX_u^xB zXg3PnO#?Oewjf+T`;yvEP5bc&;vQ<+k3U$=v}dUAspcp(4;(@|bC{ZksyRf> z-fC9WJWS2Jnun{IRI^RZgqjgGqpg->YT9o>*j-cltfpr{INy|-SvC3n&!+wUXKShL z{!go>pk_%;yZ_Tt?Ea7YQ`7{#s^-aRo)S(T)|?i8 zv~HhH0R@D6 zy1Nk*u{!`20~8EU>;l99L~JoA6aFY67=QwH@Xh|sobS8eT6g`{KF{7$@4WNOJ9Flq zfw#fi>#Z@CkK^EYcqhCI-VGqzp8_fUJ@DzO7p*PBHcoyY3i2pa>{|)BJ>fmF|eQ0sn8n{~P9zooiWlgxT^MCtuzE5e`;>F9H!}eGC zwo`-C?f+K8@2u?~@K5-cLvIAw@DGYJ2WPwfgWLXJ*0;TUyU4eL>AoG|PH< zCMZqeu5hRqiTfRO7r@&KP-9{$9 z(^*Picn0j}&^wxZXUTVmd}qsdnSAHSSCg;5d`0;f|N9vK`vyA2@(qH6<-0(>^W+=C z$MbDIwv?e3SlKWOoV&ih;qt}g8-dsWeb5gBFbG313?ne=(7L6~Fb)$i2~#i)GcXHt zFb@k3>vJfv)n!Qj5L5bh&)j$~RiRG4fqu zx_d9kcO_FX{`Xx?e2rz@d$7Li(Ot3H^Q5&#(m!2cMFP*|K+<4+W5cTW5>$3 zK)!MEy(Zsy`RJKG;A8M{I34o-7a#9`@jZp|G~}59-?PNe!RI0GfAR7D7vD=LGvG`(3)=f%CO^Z$Blyd~c!^1UtJ2lCV2CXNmlI`IgFmq$XU}{qn4x1P&JtI`Z!GKev{mvuzPB2E4O|PqgX`dW`L~k~|M%hlKK$Qj z{x6@MI0!b%$N1m(GarAE?=OPQaEp9fihRV5p3oy z-M<$fZTwHr!U9_&{_n^C{rJBh|94&5-%9=t^0$`1t^5aAyZP~dKmPAG|M!kl|G{Jr zf$gCAzjp=dKUDtC@^?f(4C4QO^MB6={O14icZJ=c`M>x5i2o@0&y@dY`FqNLjQl6c ze=Ie}!Q8&mP@4t`v;QxN}f6ul256J(p{11|y45z?{tj24NM^GMxQ{gnr zy5~**J z>wWuu`9GBZ15@1Z#rzAMSbqH9Z~ia;Czf@;+3_!u|2O#;%fD6rC1jVvW$-ijIsC%8 zFp>XD_?7(Yg!Kb&sh)3k42RU~dKX zSD+=?ec--uKdW^6SfCY3Yv?ZB{NFoL0&Ns%uRvR}_3KotpeXGu*!zGfz^`@;e7TsRO8 za%kU5SSy{UpijZ`iHE?Ua2UJ*4u>OPgG28ri=ZDR0D~|D!!QD)Fy^qno(YsBOu;nF zz%0zcJS@PXL-#>M1RWns^CM^;QvAV zKWP46U*a^f_KWP51;ET}wzrMCJ6`Z5s zECpvP__FElxjTse2l4+P{vX8uz3f~C7brN7xxE4BL-T*{Y9)yO2hIN#d!xDfpR!i!Jj-Eyi_TGKm_q#(8m!O&vgg8qaFA8HPr`&4|A)>;9|DJ3)@zvy6!I%H9DM|A zfIh2n|I0WOKncPS3_JAxH#`(o=wpRq3f-wtT%oHJN+@)hLP;u9Fby*>3v)2vd{tkC z3b5#qprlZlpaQF~21mjR;V5_!yck{rFLh{!@4o0Qbh$#KS=JR0{|{a1#GYe^u2$$a zg|1QPMuo1W<~n#iyum8nYuM0DDENN}{|}k}yQ5!Hw<~l9!B}Yiuh4jh_13;ip;r~U zTcPI^nxN1`h0OmIx)_6;6YXIV5;oq3Hxq zz$YR8AHx4b&!9Z((EglLZRmN0W-5gLhw%TsX|Mv##;yTe}z7SpTjR2WxrBrr9xk$FNZ52jpHrl8`Vbn}0Oeu0~zb3h%7&PLARo z-QiuRX#$(VT^)L7rSR?w@2&723O83+WShY~;a*nho?*i+EOuKy+*09I3giFbeW~0J z?r$~ju@-J^u{Z63ie0PlL5kd_a2tg`RJg6e7b|?Q!u=IKMB$?pZm00!%%r`-9S9DE z9pPaP>r3yXa2JI;o8q2Z!(FNA29JP8TGrjm;iFNGQTRlK@&7RXA2$D2_ynu`HAmbX z_JH_*82=CVMCs+MfWp0DA9xBp6`lt9|Ilz>;xk}BcqTjxo(<1&Xn(d20~C%Ze6GSH z6dtJX5QPV!4~FMK^M7wV6E^=>co@6@4!5j(_768G98%c)UtvECz@XK*PoIXv7JGXt zs&GN!n8Im=<5VVK5~i%uTh9zi7P>8#x2$_#C0tavrf`XD8CGD`YTVIOcqGb&a1^}A zvfiG$MB%9lU#jr!3SXx1^$K6E@Kp+rrt%6n23~1Xd24kw$~6%G4_{|l_q-pzLE)Pe zzR?u-UV8XuDsO?e!rL6ykC!_XzF*<73g4~pII`p6o$xM)^|hUVau2*0-e+0&K6!Ye z!c!E+|HBWEeGpEz8gF~?|M0`;_$B!XGQVO5slw{#@Zt z6<)0HBCGUTYzfmYh0EY)mi5~F3x!uG{3ZHV5dRM^w;FdW6n2W8^;`+@|M0h#_4?;( zg}*1YM&Y#t-@$coy~BEY{-E$Ch4KHe`M<&&;KoKZKcoBt&HokNVp(rnepO@-g@04T zah2Z{{zu_IsQDBA1^>2s&qe=5`44V0M$G@c-V)hCktT}lh`tlt8JholJwMVEWmmWx z+}*P7nI$4c_En^rB6};cC)vGVbBO=DeJRosWgmyGhwyPfMfN9X1zW=d9D4mT;`o0| zkv579R-~;W=O}WpB4;Ra2$k(%d#7;}=>QLf9pPc{aM;NqL1#s}5OjszAn*T*97)Xk zzaqT49@BfPM{;vq{|BBcnpo;MRuL$q|iu6D^3EC^b6zK_j!QPPfe?@rzSL9Tb z(;$z4+9Z9Qk2VI2^kciuglECC9sa+gBhp`y0qEz#fzbTlJ1QgRDH2fRd_{&UGKB0< zI1FB3m2MA-j6i9C_Na+-m-WjA8%CTCW4zG{vWy3YP?>3yP`ft?oecdB4ZVq zrN}r%9#LexBG`N6PDSow+PmQdc#qA&J)$G`De|Bq_oGjQlc4#3y@e;EOo0!(kk0~*~ugK@{3x{>L`AU&h zihQle3PtdLZ%dud>C~@;-$4A|J%dD6E3#gZHR$+%1pkki|2KEv0TlV3><JB1?G?fQBma@z zW{hrUHSTsrcR<1aqxgT+{NG!vXcI+SDB4s}DY`3__6KiAI1Np z=Ks##LEl@^eH3kJit9PiebM)W`@>e2b$ea(07W|~dZ40*D0+~hZ53_PD0{HQZVN=) zDSDWq?U_Rdcqr^>HSQBQ(ZenFwzspQgB0ze=uwJxrLr450v>6V?r|MG8s!*xEIbY# z4^MDzzA1Vl><)Xtli;q4Mr^3_V>9DUu`*RMEXg`!Q;aTu(cn<6j z2f%X`9cb;$geZd*9j54ctmpY~2psCL`Ooy>=mjXl;Rx7ZS@+w+s9(`v6b&ePlcGUI ztBQscO(_~yG^%LCD&0F;(HPUlVFD&C>y8YgX+;Z);{VYs*&H-B`1qE{$7QqfBky^!oEcoDqVD&7BRj$Vp#8N3{hZj>FP=(UPoiGCHl8k+yt`_gqN z*TWm&jh1!qr$uj8^i4%?QFN@Lw<_w`{%w|Zzafp@VX@aI$0<5T(ecdTPSb6N-lgc> z1QXyr@Lq=m_rd!Wok%bV^89D?K_}+pWJRYa`mCZn{~6`^&*&qHKB4HNiaw_3R7I!R z@#vfcowKAZ^l?R}+rDr*zjNF<-$6&8RP<>@?fFl}Z>KA2&wtw9bbcNr%JZL5p8t%# zpy+HxUsQCaqAw{r_1jCq>t@MfiUd z|Bssg*PUE#Qt77Ab_y`j;?{~CKyYAPIY_ZK zZfq?aJD6o10^33SKi0u!;r#bX`LaeXFwgP9= zl{5Kx7CalC1N*}P&Ogg2b}k$U2f@McJa|4F0*At3@B%m-j&MlOpqP)q4+Ag=Lof^@ zFbZQZ4ihj5Q!ouPiscpK``?&-|LcfG0>z4oU7}b?v5|`5|1tA_#j3F8u)dG*{}}!s z!~bLWzx(}Q>{7+XD2D&X@c)?kzhXB2_pW7PSEAtmv8##kf3Kfkr}%Qku2;OLVmBzZ zL9rVZdr7gI6q};h&5GTv*e!~URqR%#HUC%ac8LGGcVc7XQ1Jhl`M+X!IrM&kIW|GD ziHhBWelNTa-fuO|Az<~B-~;eMIN70hCW<|z*mT7nR_rmw9wGZEoC>E|rF;I3+4#TS zm!44US;d~D<|+6zbiBHLFD~{R%Jc9A_@ZUKwVI*WJBrOz>@`xe6nmLqHhcxX>agw` zuPZiRu{r2-;XG*m?~OEKZ=x)KZ$b0_`W}B*vBiqLr`Sh|y-)T7_#s?qmEOMl808cA zDO}VjyF{_|iY-N720w$J!!H~qBePGs@_xcR^0O{~&w;rOm7yTRR| z^;Pe_U%Z*(dn>*t`d+X(Y+*I-2rAwZWgoaN+|RP^Z_>tFDc()-){3`N`~bxdQv5*6 zx_vL+hWfS;|Bsvh*R$;vKV0z+WDkWM;bDzxI-zuiU0_$sx@W-n5sIIn_>qbqr}$B1 zkA}xU^M9|+CNX7luIH0AHUqPUcbFU@oN+xLl*y!Uqx*G z@A+i>T9oVH_3#GEdVTLE#UEGvX2tJP{1(M;SNv9LZfjIy{;&90I1Y}7cRKX$O2zM1 ze2U@|6rZU0J!J2N_rd!cRZc>||Ks?7e6nS|z4MUbk0}1IDP9ZU|M96zH4Q#yS+51A zEB=AvPbmJT;!i66hT>0A^E7mR`Sx(4c)l+DO_e*_uh5|gqz^c zmUVwKJib}+e-+=N_#cXICHpJ<4gPMGUa$BQ#r$9Kzu`ZY^^W)dlyFQQ|4*3zE3rM? z!D`&QriqOg*bN>5d6YDP|0nSO#4+f{!sFoaO3YK@1mY86cO|My^dLS7 zp6rmIrxLxC=xraJE0;tcB?c?O_rHl#DKP(6;&j*-o&o#8GvQef|4-omiT)@9;JI)h z9OTgRgv5DDM3p!neFz*1hrtWra5w@sKp*r&^M56RFa*QU{J*{w{67&#PrxKh!8FW3 z{6As-uS6aeU=fyJ8CD$D=U=nfCK;*3g#@FNcv^{zl(=7si=+90&3L#GS-q~qF zzCSQwCDeo>;ZZH zKgsj|$(|^^96Bpc+=s0=1>*n7(=6qlqmzA=JV(hh$o7M0!n5Gn4!u5;?62ftCGr2{ zxnu{zL004TndEsEyJx-R5G9{ca;TEmDmhHaf|3^~8C7z)k^v=0FfIO{^bz}QT5qj_ zC?Obz5zF$^^h(B*Oe+~jPrxKhS&ch#NM=y7FbDINb-!y!7L~k2$&!*Il`NC3z$&a+ zrME>FqKtwU!HX?R^D23%l4F#-4E=IA8eU;F?ua6JCCXJ0|4&|HS$F)CyiUn`l)PTa zTa~+xmIi|SJ zP$lPC?DdNIN-k9LO(ow|68}%W#oXS8?^va`-`_)dAASJM|GnQ|P2&Ga^Z)vsKUH#_ zl8cmFuH<4RKUWg}PcCKJWzhV;z7^*GN`48yf?r$KYnc^Fu2S-U=quqj@LQ|#))4X`#7;`>tki)@ z?V?n3rJ5+Uhf+;#ZmC`2Zg6*p-nOTN(hTki&HugDOSMpHKc)6YZwdE-=KtP0r}jr_ z1zW=dEbE>hQwJ&49PIF1pE`^9Y|Fam?o@xJ1}laCr_Loi5Du~$_ikGX z|95*}YKT&|C^b~6lv2Z#iYVpmdcRV`nQ8=VfIgdp>-?zzN)Y1zsjy`^_7S5>#R%~K zRDw8ZHSSe>Dy>vmsfm1sdI&}jd@&D9K#5Y^Y+wZq3 zHASi0l)77~+m#xt)E$;}T`^_;uhe*WC%ntD-oBfl)I_E3LBAK?2k*BUZ~l`|%>R{o z5KgwNH~)u}dP=E>m3mC6N60=3r^0Dg=`G9rU#aQv326TBjb>9%EA@g>&!9gGpM%d^ zjr(+N>P3{7;0!p^vfiG0S?S%Bnyu6trCw3$Bc)zd>TRW7Q|b++UZ;KzoD1hQnsz?Q zn{WYq%d*~4^Nv#QDfO-??ztoNJ~jA%%KTrcg_iZ!KCQf zDfN?5>#6x3;{Pf0fA2Z!)CTm8a1;F5vfg%WR_b@9wxDl?zrx?F#%q~BEOy6ZslSxk zrqtg`Ieqva(_QCJ{b#ZJ|7Gdzl-^nC?Hxtw9pH{|C#!Lno8ASb32X{?wXAzwr*~Jn zi_&{2-AZXGy*CBTl-`qIFW4NmaOj-}(=Acn%hD!p|$1f?Bp4?9?v-!A53N2L!VI2?9@ogLPf)m7=fN_SJbhtfwVeVo!qQgakM z8Xg0Wb!bP8^8)nr@hB(26JdADy1grXlG1&YHvd<;C+r1#Ta7#FOPl{IeJVT+o^Dz9 zh)bWL^kAj?DcxV`Gs&I>&xYq%rRx%D{6CHVrw5W9WLfqgAJ0?ze1aixC>-X{`}L3X zaAnR`dW6y+D&3&;HA?%GE-CF-I<9m;>8R2{rV2sxf2AWf2lvd9j#<2gzMW1eomJZW zU+EM~!;ICq$8|b~g8!%S|FrqP_v>ouveFkTT~T_J(p4&Ja3s9YD!sjbk;U$lb?Hl# zzCvltKaKgPG5_>vt8qOuJ%%}8{%OoVeYIs>pG;q?v}0x0DgCt4*DHOa(&qp5X>VfM zo8c|+R(Kn{-8t};z5|YhP+`$VOu!N=g^a5{VfJ_(<4$W+fL{i4$NfBHGL=y~{p!+QI?gfaupgtIK`K4qGo zt@Im8zoPVOO22Bl=OM3CIS0;#_`lcB=PUh=(r=7zwNNz^6#R&2j7PuSl0b5 zzVt$6S}6UI(qAk6vC>PF{zU0TN`GoK-kx1-vHQ$$da2T1D!q*PdE+5aQF?_kJ1FgRJZIfjLi|7dE%7S2+W8_w={0aI{0^>z>*4qC2lylW32uNJ z;U@Sq`~_}?Ti{msEBp=q4*!6E!oT3(@E`au{10w3X10UdJG8TdDfoZJ{9l=!q4~e} z9Ym(7GE!z&^xfd@a1X0-pAyeBL&5(u_kFa>nNTaRHQOe-|8T>zE{;$k&4!wSrIYF7;%ABZ7 zPi4&imFWRbg6998OJ~gg>r?enrmr&ie+K{0;Qtx?-*u|Y8O)&{#Q!tq|K2f`IY*i2 zmFcg{)yfP|#;?q|$_!Bk|Ie8JD>E3L2hIPzqbV~~nG2M`|3B?Ub~qdX8=%i&eOUoz zV#?tEnGo49H2+s7YL)JpC=*v^v@!{F{6CXY<}zi{w&BhfADN6YS%MtQ!vZYA5-h_C ztU`N*r7|Pog>V$SNSR9r>?a_c6;_5MwU_f2Lo-T8)8MLi2xbER?xMnfsNw zR+&4LxlWmzmARf8^M7S-gy#SCHpKrk_Jy< z^y%;k_@vdi-k5nB(B6}42(GdU7n*Z0^=XhoNDtm&mJ(N9> zn(mhMmVT15eUvr-SGFhY1$$eK+gq}ypqvU%gQr{8+dF3{8&S5OvS%rKrs?jLUG{7$ z&w>5n0C+AOsBBQ#K~6VNb}&2-o)3q>p>Pvvj)p$LpsBBHy5_%a{VAX2ev0`?l z#jdMlM=5)Svd(5+uI$BBUIH(LmszE^FGgGJO*KZ@Yn8?SvsY1hHN3`Z+@n5wU8DLN zlzm*;8`ltvuI$a!-vV!iw^_Zn6?a(dEo+>z)07=g4gQ}s|5p~T$WE|I=OmTA z2i^MkP;jv>rj~WDp>n$^x2JNuqwfI)n^}#!y}7+m%>R{Z0r$47`q8HgmPu&lFH?jOHq@C8JM+t_i8bhM=8J}ELqka;p8ePRak@O|H@tH(DQ-ZMao^R z+{Ma`Ru2EqT}sVm@N%p4dgB!+W8jtWD$9D?evNWBDt9fq`M+}4!yBx|TicsZ@c-N` z#J5`3JNy4EI0fV$RnGihxoPk*_&A&npMX!or{L4@8ThP2 zch1T^&l+2hO#BJT!5ha&Oe*`O3Xn zj~9@AOS!k}$~!3U!uR0&=DjwP50(2&xrNFtQtl&`i2vvC|J=T#p&wKURw#jv8+1;%B@n~F|pOkZB%ZJa^EYrmYVP2 zI=J5I-Sb!O2b3S-PjG`}y=84uZmV)XqyGXo!!1_h^*8)KhyUly|CRd#{t5qbHch#| zmEV=%ALY0@&i%*7ZN~g|kgMbT4#Ydco#4)J7uW_%xMPMq{-5tcwkzyrS+{NTM=HNS`J7JF+u zMfpdSe~8M5;Uku1U-NOQ^3#-moY-CgV_93(>DC(V3ybqlqC5qkhR-PftP>DF2cL&8 zDE}hCOK=9931>m`e_M)k-pRj$@+y1{zHV8rt@t=s`FR9y!1?e^ht1cvCw@zXeU*P( z`EAO-qx>S}-&KC0^6!y-AASHobm%#1{v(u+A^xBLv{81k@{SoUA-fbVgP+0AA^xBL zlK3n5HCzr?K(}#L5`P1~g{$Cd<$qUx4Kev7z6`hvsp~5pNoTS3lDx9oB zOog5*oT)-D6;4y3H*@F%Pl2b}+`Kh0dsLw>JOi5ld*`geStmVif$pa4GR+ z(EMM8(eMg~_V?_ADqM+jm3{R3*flELufnw|+@ZpCD%`BX_0-`1g&T=)vU>M?TDS$} zR(Kn{-Ll@?#;S0)3ggi6|H7TbcUg@)0xV2G!T$^9|0>u?!8?`<6IFObg-I$nYx{ud z-f|~XIR!ohAGWNw+(%WIuEJFGY49=lc%zypP@aTO!KW?jdPw0}6;`P5oC@!#@VpAI zsqlgdvs8GI%9r2_IMb$b{)5}r-27jK*%1FPylPqZs<8073iDN%Lv}8l2j8$7ujiZp ztFQpR1>bIzeOHCWD!iw{M=HEe_5=7KTxgZvvhe@HC+MHTMV9rJvP6Y1R9K3>4C4O< z^Z)u$hW{77B8&eQmRr`nZ(MLza`YK_&qcPtCvp{#@J z;rEvH*5^kRHmLBEDc&C3NX;hrGyKJ}?iFZZiwb|MuvLZMRQT0&_dg2?zf+0-7x4eW zUzT;RqYMA2=$JhIU-*y8ZN}nuR^vW3UBv&3JEHFdcebp%R>dYNj#RO!iUU;KRmJ^P z+)YKPxI2}5Sf$%Pi_KKrTg5%m_kzu#`G38pCCWZ? zcntBe@HlupJOQ2vyF0XJdu**vf+xeCuovtN`@mBiTEDXT(^NcDMf|_mm#sSk_H*bt zM)52Z{J(e(aevEt`{-O16Dkf=u|dT_Dh^d~Fg54F^WhMy_u6?F3de78IPnO}dUNxs z7*^4b9)Lj@vKseTD@IVv|5c2^xMiJ_g(*oDiz=p6%&2JoU*C!>*&NKnf@Qt6!vBlr z|0-5s71pfAy}~M9sNy6QN2z$7iWjMPwTc(3I9kO^sKoz^_h~4iuixg{9nbJ;Vq3SZ$mNvSMd%w*0Qbx6vwN0kBWDq zoBykLH=JNK-m>mRxewkCCtB9q-Un1%pyGonPFHcVijS%|g_?(;`M-*fSiO60Elx$j z|BLv45&w7Z+!miu@mUq0q~%E_- zxJJcK(HFtRa0$f!i_08)RPi(TIpqCcMc)5a{0fEle-(NESCRLB70pytRT#OD9?J^q7APQUt5C1>dPlS+H3xIsn7s5h$ki;A15 z|Jmx@^GcaNyvg;VGWM7tUG=# zjZ*02{T#Qt1wrCaN@6rF&Hxr_uzK#xvEO@Gf|_P3!tt=^l%{J#rt} z`%UrIZIVils`P+LlT~`KQRNgW@&D4p#E)3k{V%`LRF$4kX&U-t@NqcZYP>l=X|a1} zsr0l;3sibWrP(SytI|s<;s2%Qnd$}jqSbr*ZUzeeUz$a1{$J0&qS9QI%>Pw-4ZaTN zG^&}0g8!H16TfL$_o=_qTPl5`(%UM1pwc^J--YkN_pQ=BrK@|5xc_%X&xa zrz-EF(jxT5a0y%rm%-2A=kN>orAk{=`il5#mA+SLxfAnog-XsMzEf!>AHPxQTX+1- z$5kq=u2-%>;V0m{Y1g5ww*u$?N=iTQ@kjWRiMH|^;6|0q|A~KA=@){{rnqDE(pHpT z;cxJF_y@%QOZb23Zo5m|7HBYZ2qtEUN)86XUZ*5_J%Ft zK9+TRetAEY4^(-7bn}0eTf+ma#_h4?gHYPQw(wxfy2oI-oywh6Zm;s;Dt91zDC`Ii zvr7IWK;=#ryXU5I7nP4vxhpl@ApT!A|F=`Qt;x~w7y4*xF~(MzywS$Bj`uBv>g z$~BcQR(T}Z3*jhukyW~*=<+2NyUtL)Oyw(8zMPuT@CrD_YP>#q70T5R|1V!_*)Im5 zT(9!|D&L^;c$IHd*)jQ>&~Jvfz*`-9=cBUQTkb#~3&&a3Ylk~kzFXzHO!1aJftq{Z zz3@KEdTlaM1botJ zyftx5V2R4lsQkLh&#F8_<>#ou|I05BzX)Hlsk~!nrphm?Jj)b!BvYPE%`5O#X#Vg0 zk4brs%I~Q>SLFpN&m)Wfm**4X|K1*d3*~Ky|Cir&;(E)xukyz#e?S)hFE1qi$ZEVb z`2^)txCkz`tUF#UFID+lm6xgfwaTB7#sAA+5Pu23vU;z5mZPkI&gMJqyb^xnuznP; zQh9^Qt5sgF@*1*h;dgMIRk~-T^7kk|K>WY_lV!bD-Kg>wl{b<78U6w{TaC9q_#eZdz;p6`O1zcJHegd zE|zuOqta9rsj@5jZg6+Fht;_Kw$cn`Pq-Is-YC1bDhH_2Qk7P!nE$J?FWe9A->B03 z-+NN1a-b@QsB#cBZD3n?u+?~L-VUWb>;Mn7tlMIh!&Et0mBUpzN|jEkbWx?VWt}TE zTZgW&8$1FY>9D@lN2_vzD#xH73(fykIo@i#`Jaf=9pe8L^M7xjR(h&(rYgNuIZc(` z)bxR;z*DW#eX^)>I!a%72JC0q|GCS>|0`#sp9A~D0aoLV{VD@hxlENos>D?ptcqWi z^HjM&mGh|_0*At3HkH?U!%;@S2I#Y_dncz7P$i^F&=j{1SHjdpU=+qI>-Cd_DrHrY zs^nBjk;VTj_TU+a%GCD zx2p1xs!q>*SXJk!d_R_&j_8z6f7}GvG`(3%(3z!&g-KSd~|aUvo(CI-H}*T!MM<4LBdZ2^YY(;M?#W z$d5l)`0?k;`zZYWbA{i3t}I01_n(~+vbV%fRN?oZEByX*#eVP#;U9* z^*#K-q5V160+pXs`9+lt?2C;M|F4+;*N=tG=v&}c_^V~TqyBeQcTnXIRh+r~N%k-J zH~hycJ*WB)1^=&ZXK@w(ceB+URc)#&{$IuatGiIs#OC1sVtf_i()8q-rbl*6;v$V56EgDENQ% zVB$k8y9wW}wpX=_svT7As4D*Njs~lTQF%D*1o40OoK@|r>d~s=|5bNB=Krc5<MaYrs{B2 zFEHI5dsOlNY6JD=|El^e>)to6233uz8bZhas}bU;)p&b9j*@^$n6j*U)~IGwy;#+( zs#R5Usuol=|M$GKTBN=N%dlcucSKjMp^StV!coxt-y4HfFH!YcRWDU_jH;KBy&R5) zS6HRDo>!t=1+RwY|Mh)+ovJshdOi9L@J498d`X>J#WsLj1q_wAFYm^DO#v@Ok)xWj%j*N!5Q;ouTSH zRcEUDs;aZ7c^S@zuUNg;GOwY$4(GtRmUXYht8b|KyQ=fi--HX`TkvgFzf|=d;&aWmYa>ejmctE#`bv7JY%f3RtPLj1q_w{4NP@BUTIG1&i9+gsIbR#V#! zZVz{WJ36$b)OJ$Mp8q7?MKyc=lenpB_CP7|ZmQYypTy22_WUPtGu7<*PvX5)v*$mF zTez<#QLQD*!vAag67Ofrb$ei~m1=EN!~bgskUbC{WHqjn)Y_sP3=e_r8f81EHdwVo zRqLr*N7as2?J(84s)qm9@c&w8rs`r-dCSHBYxsZdNU}#Y${wTIiK^lMwd2T||EqR_ z)p%>w9i<0637%|O_Z(g8rP>*)^;Yc^)%rMki_ROUITfA;Pj9~RKGpgnh}Wxz|JQCb z-P?~ht2R!xTU5JUwOg6$w*NboYImTFHHGgfoZh9{c-8R#n)$zXRaKjy+Emq?)q7C2 z|3lU}K)aGPe|zj_Y}@mWZQHi(6Q|SNX(XMDZQHhO+qUih%-8kn?ws89t##M4s%ux( zMmn{3S59tDXXGqK&XDh!W|Obp+0t14FYdAP7`c#<^QFIF$nqj-E;dd6x?IYLQvJwf zj9jkPE37rEI*#b?|3|Kt{u5Ehim{Ln>36e4x?gl$55*HEEJGgJ~#DD`7fu`mB}G43uUpP*VOc&24L&<(AUCww|T=Oq0DAN()e0n9_pMTmH}A zO{GPoS=2OHowoEp%AZqOobrp5mY{qlr6nn?KxrvT%TiMQFIoOC>@ELOTHZ8y?<-29 z{9m&CPiYlOf!)}pRVl4TsYGdYyWdJ{P}-l;nv&NN*A~|i*A>^Jv?rzYDea=m4Jd6W zVWX51Hm0{77?QI$}-iOk@681Aq`rQXp9v~hl9wZ(t9wHtp9wr{1Qo<3Gj+8KB znl$s|`ZA@8^i{DY*2RX{Oew*k)GB0`k|(7vwoRYz{x-Id(g&0xN-t>`R zVqZK;FX+*f?xJ)IrSm8qOX*}v$4P%Yr4uEbkTSKGe3HrOuf>&4p_JZNr&2nd(rKnl z|9yIkY|b$G?guHIMd=)A&bH&C-8_~X?cZ&8QaYc~HIy!(bUCF9DP2P8B1%gBna$%1 zP`Z?o{_;Q7q|>zf@Cr&-DU|ICn)THd@Z+Q^N z+(hYSJHMrxRBzF4rE~|S+bG>`LDHtX(@M@clE=1J3-%Twahl%A1bKmJJR zxs+*+rS!b`g7~6kU29eTFIoPl^s4xp_`3Lp_@?HY{`gBe>-5K8Ql>xtlJeb@64H6S zZ?fJOa`{lSM*vD6Q_}gr^eN@7D1AohH+B6vB|HC9(gQ_FhyT*o(q!*D9sWz-QTmCJ z&i|z!Z1HW_KiZ^H*=~%VDcSj-(yuAAVNm*=^0<`#kp53m-~TH8O-Wz%D*Z!A_n|rd zn>kX}_rJ>e{#V()|7E?T24#K!tE}&Tl_#LQI^_u|FG6`D$}`Kr9swv%LRsJcDo>_M zJO5L*?|(^{g0em4NY+=t%K8deSziGwPfJlX>MMvEToa(tZMr z@@$l6moSGoXG#fkQJ%Yy^%KD5d8MCEoS*Un5*93M7NWec$$2k}s&%oV^?$ldw}2%i zEGaHkv@T6~nL=Kc@^Xc&p8zheAY=UmaCs%kD^p%Y!m8qGDYJfcxd!DmO=GiLi*oV% zzvXo(uPfzx;`)Wn29!4}O%IiKm)Qf@;zq`a-PvYS%DYOxo4C8Uhq$M>muO%9qP&l|uehJMzj%Onpm>mYaLRl& ztd~R6_deyr#KXlS#3RKK$|ZS~&C4t+l&jLz#CoA`P;O?j(T3Eb?3$duk;@)szmRPU zpd94yqjDtUSnP<(|7FYny6jQz7xGb*kCyTn@mTRV@p$nB@kH??@nrE7@zj)BTiXIC zpDrr@+knrad@p64|I7ORZ&}~}EuUu(6lMMA59JFaUnuI!zh(XZ4`qG-x2*5~mi7JL zvcCUY*7twQ`u=a(&i`_}n({S;d@W_w|I4cXmsS5StNveB{lBdGe_8ea@~wGUyL=nv z+f$kH9pathUE5s{UVA{lA><8tIHw|1YclUsnCUtonah_5ZT!|7F$x z%c}pERsS!m{$IBGzk)nV`8f&Ci&p=)|HHxJzeM?M$}dxX#g^S(^j9grLHRY?r^>I} zhM4M2w(~#bw@i~g>6G80`~l^6(+4`rI{%mL{Gb1&LHR?i6zWcEE6i}(%DHP*H^}+GM@C~ixY?wiW7+w zi<3~9h03Io?Kd2$AWkk$Axrv)8dQ zyEun9ru@qhLzSir@_CB!AgrNpJh zWyEDu%4>NlE2qyCR92v(^MA$8|JmyO8qvW3~ht~80*EA)Li9wiyS zl=jauiRwQUtN#=;eOxnAy`}P`>9aaO1H=5vu-QQT@O2B9%9& zyrdO)S$rj>gjcD&CgJr=Q>@sVQobd=ExseZE2b;(zJw2`q*?SsDrw67NScquPsC5D z{7&UF$)Bgxz|t+?OKH9mzZSm{zfCEd@5FQq_(A#~#h=8V#a~j&=2t4eWwP{tn4JDg z_u0x{nM~zxD*qJn|55ojx5;ja>R43AraC3nai~r}b=UiS#xn+7&RVSo6iIfwG z6I)YSHLXrc6-y@7$*iJcn#rk7VRC99Qk_aJQ;XA3ole5Esj(cVH_KGEerL2vRcA_> z@0itDsLoDR^`ENhKWR*}nM1Vtf1a1Bb5or^{fk7Z^H5d&r>go-mbI!2*qT&T|Ea3} zlYKX*x(L-8)kUf9Om#7;>rnk4)itRuZuzsigt(-*l(@9GjJT}0oVdKWLP`lMQe8>H z%Hk^Gs^V%X?R{EZovP)3o2m7+mS(iJ&FIzbB(F<#1FGvuUf=ZTLfPDv|EtRXRptMx z@_%(x#o0{UT(ta8bxUz8aqE;4wh^}#w-dJ)cMx}^x>G9Hzw~HY-G%BNRCm=H?xr#9 zJ~W;^sg|kkCC9zReZ+mm{ZdNUUp#>7ff5c94;Bv*4^1iIFsg?a@)1;zlyXEYnLhnY z-{w`(NNi2=|9`kzr|MB{P}Si-%|cZtO=whGvUJT-nKS=%{BD8^jyMo5Y*NTf|$%+r-<&J5oxxlj>cWY-?^^ z-$V6Yst-!OkLvvr9vIkAeMp*z#Yaq^zSGlPtg8Bd)vEEPOlfa{C#mZ5-|Ew*$v$hY zruqNH^nY`u`W#i||ElHxtSYNp_a&+?%l#G8XP+@uU!(dC)z_(JiRBHdI{#O7{x5n= zkL6U~rIuz$+r+7+dFB_YA83RhiXVv|i=T*}il2#}i(jOa@Fmr+Bz#?HzM=Z9G~ZE8 z5B%xGzZcU-fU)iNHqB2|)ARq>*~&9bN|5W(HT21&2>ssdO8zw^|Jn}J_Mo<-Y%Kp%+gaR2+*RC-+U}{4-67KKX_sca7d6ZOlJ}uz z`CqcO0K35spyo?+AT{Oxn(}{5`M+lQpW0!f<$r2Nh|2#p<^P)He`;m1BBqCjR8te{ zVnb|-j@S}i(MxHAH?OuBh@lvXvDl&3m(Zn_Na&?3e2+5MC~+Po=i>W|C-MK`X45xKb@LB|E-;wURpHsJ)3)`qjnDWOik@vPFt1Q zdBlfMJD=vw)Gna85w#0#kFH%rV@_%pQ%~QgmrzfKbSbq5sa>X9`f~9KSzak#MePA< zS5v!z+BJ3(t6eKzNA3DN!{`V{?MCTu5^ol75pNZ56K|(>54AgNx2@eN-X-2`ZzVgk zrTTkisZ(F={!D4qo0{4~)MuvlF!gDuJ)#k+{$I2DKefk2)&FZ&|EKnpZEBX3o~HJU zG^+pCto~2!dGQ7DMe!x^W$_j9Rq-|Pb@2`HP4O-9ZSfuPT~XiOs=Y7y1Mx%gBk^PL z6Vbl>MeQ^3bMXuDOYtl5Yw;WLTk$*bd+`U+ivQGp5`Pwd5q}l+;X>_q$$yA{ihqfJ zi~orF(4_XS+?!8pE!R?dqbsLLw!N&+f!eN`cl*vrv5+b`u)fHqOx4fEb|fS_aEy^NWY}%(;L-# zT$=j&)R&R0-+!zxCwX~s1^e8pzM{C2xU#s4xT?6CxVpH8xTd&P%JeCo`r6djk!D?S zy-Y881NE|@xRJQAxQSXf6*m(%7q<|%6t@z$7Pk?%6}L-iZ&Dli4%CmNz9aQRsqdu7 zJBz!ByNbJsyNi2>dy0FBdyD&s`-=OC`-=ypv=USOKC^mR zD?cKZ#IjgPS+v%u-%Gtt{Y>f&>LK+eb&t9u%a-Vxeg69T(zM0E^ywX9y+qVcq8>}` zh+Q!et^PwjE&ilTi$5vT;!jFT{?v~Zt^Py(c<}_$4sZ4g6sA8}aZV9W6;BgS7xUu3 zM*VE+7g0Y)nsdeT#PdZv|5LZae{qLjEd3?or74T`xt#jd)US~KO7W_p)@!7> zR=iHUUc5oPk^0@#?fkFqZl->V^tXz)iMNY)i2BH~epf0Nz27q=-$(sR>i1KBh57^3 zU!eY=ydDxC79SBGOuy7GVB^1oFZ z?6rQC`kT~Wll;19`QIF^Rr$Z3z3bnR=3OznPu`dOK}y^G>mO48NScquPsC5f&qU?_ z`WLBe2L_A(74`q9e@*>+>fcDC{9m{HU#!~?(kuVhmH+F?|Mj%~pWaJ4{MUbztn+`} z&i~YP_^<2mUr&qwsYd7jx}{C(|E9F3;8bpmMPo`DV_Pqcal~=O@kBfP)0jY;I{K5^+*d^~MI0Cl{wknN~z4EB`kv|I?U8oK~DpoL-zkoKc)foLQVjoK>7noL!tF zrDZLPITww^Xv{5n9&uiAKGE_&4Xt@&LCFh=3yYTj?Ivj~n!oOi|IxUF#^N+mKI>H&p*` zSpASd*dYeo-Cdso+_Ruo}SYF zpB9UMCXEYdoTZp&i|2^S|BdrB-}7zm>30Tg?iZ@{BJtvs#T|7ijo)cpM&mgem(#eL zhVp+y`M+WLpT^bVHI~>Ls{b@p|7ocH(@_1Vq54ll^`D07KMmD?8mj*^RR3wH{?oAf z4~;uT)qm3GR@2<0UhWl@dmHylw)zhZ6@?nA|1?zpX;}S-#-rk6;^X2I;*;W2;?v?Y zDYX=~1xWKejgM)(pk9>!8_NHUm!)|{>-?(tn)te??|(Jkl>C;c8dT#Q$?uBxXh!3G zQT3n3hmx)SqYo?7R^|VO@_$45zoGo!u=)>;FGbaV8dm?I@r|hZPvbkuD*iOA_(MbG zpho)nZz@~;hlcWhBfDEH|JzPy`afvSMdMGJ(D+L;{agG;{6Fzuti(cFgSjx@JT69r9u*3h)S|F>JHxr5zKHin&O?oU&{|I*xr z=6*DHwYOMvH&MU;V)lE`+*6vp#J$CR#C=m*w1PC1|C`GHP38aQ!5ZWt;-TVUqR#)# zBP1Uwj-<4VXRmdcW{+ltW}T+q?@jyrADe>Rfeo=KI$}$7MNhQ9|Do9ygOnO@NHdZq z7CWNq|IH+`FiX)6CWmH(T{ z|4rrp<~8au>-Rdz*NZoZH>R}LF=hJC?txqIyEJd5^()QWaMIDH zY2HQi1)6u$e4OSzG#{dQFU|XD-e+S=|JfWLplOHy>{6qBnC7E29~o$*d@Q@9`2@{p zX+BBwX}LdD=%2A5ibM0cLiv25d6DK@G+(0mI?b19zDo0z%*JR-^jcy0hA!V6vo(E> zyhAg6#ox{BGvkyrKcM*&%@1jQMe`$?pVR!9=BG3*|L0~F|FbM0%`a$vIU3v|d`g{+nI31lAkI16W&IE&(}jns#@P{;p~L73(n4_&uw-!A(wZ@*$Zb6oIP^`>E*t6VY4sJ5jgwd9D=hy zj?%tkTY$_C!m;F^8B230&S3)$j%@+bABj`KQU1?+FXL3xR-8&Eg6-0vs2|E9`w7EB;vTdCU+e#)-1aOpntk>=T@$aC)g8r$4a4IU48K)CT96A?0y} z*9kah;hczb3eHJ5C+9Z#yiUbA1LriH(}(q`jB{qD!8sd8sopsU=Uklg@-gQTF2K>T z-?1&A==9>k_fnkKaW2ETALnwMn{lqdxen(_oNI8d!nu0jr72kcFMO}Zxe>?m|G)<4 zrlR#0oV##t#Yq$XZ8*2*X4x2QHSWwbICtaRn|k5glgF`EZ2=}cfb$g2gE)`iJcRS` zz(y{Q;yi)#7|!Flesqpc7V)3Pc@gIsoabv3&~{xTFU>qO_BUtixggq z(OQC*4S?3-rpzsuq_s3H<^Ozk%g|bO%+W4SYjs*H&{~z&inLVrZ`mV&qOD>=F*{nT z6?)bGTWiu7@la%a1kl<{diw|< zZKAa$tsQ7>MQdAHs{gmF{y*fk9j(#)FW()-ooMZBmU*0AX&p{$H(LAA+MU*3ve`q- zcL7>^)7qETKAFpawDzZUkSq@nZ7+~;Fs(yr9WrEj*pPe#tun16O=B<02(3~k7w#45 ztF&qZJ*@_SX#$PIG)xC1K+e4S|`yuoz}^;PNj8l))|FxW--CD zX(|7=&Y^W~=0z*t1!!GB>tb3u|Fv%hF3)m*z?vz~x2ED``DX>nd9J(z=?~ zZM3eTbtA27XoPA|H<*ym^d?%jsP*O|&aGLKl(*BmOVhlA)|~^rn(n5hv|gw660KKhy-e$sQJ4HCEYAO}H)y>_>rGnk(0Ys3+rxb+^1GRa*88+n{I~8t zr1jCTC9O|reMjq4T3^xnjMf*lto}2wq4i}k!mnw4Q^YK`0DG~%r}a~+r)9eUt^E8i z`DgK$BEoNYX+roN_e@%U;I2*UPu!Vl{e?Rzt-opgC;NYBTk0j}kI+zAWK#JH1Wa-o?FcN$!9E#c!%jypvjDtlersc@$@O%~s5 zrp28OcLrR`|Ct_lM%Wa2FkOE@>}|=bGGWN!(R%m%?2RcWK;Z2CcaHE`Yl{ zuF5{{3PoQl;T9+VyvJ2>mGE6V|Kr+6020;|*D}Yv$8~TI#a$P77u@x5x5Ql^cN5$V za5uu;a9}CNJpbcvin}@PW`kDTEr#T+aJR?Z8h2aV(fp6Q-H^==xH~DP<^ObexI_8h z-4%CV+}&{Z#NAzHmi#kIUG9auH*S&q^V#i(dob?)xCi3qhkr%3`cLMIJCy(3!*FBV z!*T1lN8na)kHjtEj*Qt?xmdkw5u{dV8n`}g6Ssxy47_k%Trcl5pIsX_#0^ZD4aQ!V zsEE_SJqEXnYY87W!R_T{wlYUad34shPrSEWisw5xTmG9 zxThAH({WY&DeQ62!u<*NY}`k1&%wP3_gvh|anHlO2={zkrG58;!I0F&#kiN^USeTK z`?bA5-CcouJ?@pb*Wg}-JLdV{y%zVn+-vluxdHdaK{VW(aqq^x1@{izTXAnIBHx}n zs$bkYaqk*vaPPr=5cgi(`*HKbe-;zh@_#l3+=o&bx7Y&QM{(cAeGK;n+{baBQtK09 zz6;z z!TkdFUEGgw-@|>su>1h`!$Bym@W;4%3UG__zxx@k4*zMWJldDIKj40a`z`L*xOx6B zTED~nK9dX0Q1W+w#+w`W7d&u(#Y-jyHPvm+@SK_;~Z+ zEr&NR-eP$3;Vp=l=YPBfiZ~15*_j`2;mi?l(V+;berdeL@s`9}Vo1N#ki1OcxNIRT zkGD473V5sHt%$cWo(}){$X6NiT@6pWfLG*yZ%sTUf30?EiMI~kdJ@*n*TIzQ<83e$ zXCu7y2G|(yO1w?*8hD%H?Txn?-i~;i<86z#1>V+pTjFh%J8C?NoNobmmjCg#$J=4h zmsWKryxsA3#@iKd7i${z-7SlTw+G%{czfEV-fM+^AG|~H_Qg90Z$G>P@b(`w!hr*O zyo2$E^1pW&UK#Ijyd&|B$UC*0a0E|>|6(L~6+Aok<5?|8Lfyh@BzR4{6Y(6p4qgi{ z#B=d{ndQ3xUK>xzf7Hv8KVCc-EnXMzD7*x(S46h$py=^vyyNhW!8>-KRD|R4#>oG8 zC*hrscQW2tc&FfKJZ zmi!CLr|_PUzIX(%7w*}j^?AIH@Ls@s1Mfw=S7rGU-phEe41%P_c(2)|#V_)|_a@%E z(!7QDHr_kAeLkM|@IJtMKl3WO%Xb01kMVxM`vmVRyif5y$Ft9Wvj})!;C-1#%h&d6 zyzlV7!7C2`qZ2H40UMib0eC;*{fw8N{EL{s;iqZmcl>Gb{=iRD^q=_S;QfX7kG%da z2ANLwKWS_Wu(|tV;g3BSo+;B_{BiNe!?&D|KUxLCxB8E~CdQu{!B&d%=oipa-o?Ge;)kV@#n&y1AorE zH4A8?ojVJTKQF$eef;?f%>si^_zU4LuGWR|7r|dla{d&6Z;Ox_<1c}~H2#t@7|Q?t zGWg3$ndg7W%NKpEh`$5=O8A@NuZ+JA{wnyZ%Vt$^wUntb{u=me7V=v7YiAJ(&ARxO z@bTBfUq4goazp%$C2W)_@i!T?O1~NY=J?y-Z-Kux{+9S-=Kt(Y_P52iBhkr2s{`d#sAAp}% zeg<(;GyFsF55qrn;8pk@f$!iSiC@DX!LQ(#@bi;@W}|+K{O{NCoA{0YFHQ?Tz<2R| z{NfS7`qf7O`8Y#-)qH%b|D+M{Rs6~2gy4Jp9_?rF`?S-$;wb$0@Q=p74gVPY3-FJ{ zKMnsl{1Y{*Av06#An0V=va__*W|a6Fi})|&zcgg?3jV93 z!ELgyuA__@ZTMZ@ILJc@jt--6aPc}Z}30D{{sJG{7>;eG0S|u zpW%N#91Z_V{IAv5S9!qv4*VAXC;ad5zb|}$!2fZ~asG_|8~!i&zmDnqJN_SI_VO2g z`nvpWW;QR|3sM98e`$|{|DVb2v1k|hKWlA|OM86U+S+OyD}nD*4P zC!vjkOiFvQA)Co*s|wT}-2!Omp90gKhPG0Dds^Dl(VjlP1^9qmnNZ$W#rBKYP- zv-ldRtHRJr1+MV_Y?LBB8OnXn- z`_tZw_P(_DroB&QUs&#!#Y``0ACStl52RfbfAW<%g!bXI4^``71AAQ_LHkJ4G~Z%K!O%&!&AL?Q>**F75LroR_k&&+9+5?fg&sV(}6)$VYM+?K@~+PWw9ASJ1vj z23OL)iguCz^S-Vf^17b(&9rZzePa>lrlHnbXx~~4;5OR!EMS*;oI7bhNc%3@_tCza z_Pw-6^M7G;e-ZY9LU@SwW3(;*(|&|@k^J*nJWl&5+E387XMrq85$fqec$Of&)t@7n zm-h3t|D*i^?ayhyNc$byFVTLT_RF*_^V5DM4`SWv5x|sh(0+^do7P3%uWbrN{C8=8 zMEgD3AJBe(pjWgH3!9H=e=5x)Sz0+TYXu zk@gRR)*{-^wEv?03+>-&|4RF}OkcGALHo~KlaK#z+UdNM{BzB}gO~(k5zIg^Ho;^B z;}A?lFfPIP1mg|D5==mlpZrIM7fehr3BjZTO=?d7!PEqk6Da=&Qw&BzFjZzrFb%?3FaBZOa+4Z2v#D{ zgFvtV!O{c^5~P+35iCluFu@|j_6o9CO8G8MuoS@(1WRU`oZ0IbEF5$;yB?m@7Zdf9VeK(Mzo`xG|&5gbaeKf!?nmj4U=K?H{o9Bh}x zbgb3Jd>Fyu5{}3;sR6+VL64wB;1HAvYBH#Z`4&J>Cuo>UKKN!Kva^Ah0cf z;EtiDy9gd2xSQZ!0_Fca=6wYD$v-nDc#uG8KX|CnJYqt=+K&;uPVhLv3j|LPq)Gls zf~N_d8rY-)!87^9O@5Bx`Js8eNRS`?30@{p{tt@$Z%b6<|KJURPYB*5c%R@cf_Dkt zCU_?s$x!_FiWU2S;G16of8;pAhCKb(?q z7Q(3rXCR!Ka5}5Z-P|^`dBZ4u!f~ntTf&ypQlz!utuIA$)-FQNjlaA0~Wgs4wOJe9Vs#K1ujE z;S+=SsX+J?;nR69x#hEjFA+XR_=0+TK5Hd>F*mb?df8+X^88Qu8sS^gye_^$_@>$9 zG2bS9Px^NV-!;9O2;V3CppbR=&+R`Znw0Pp!oLVVCH#r-Gs3S4KPUW(@C(8(Gq0Sv z*EfXU6Mjqh-I#Oyf$+yMEq^Bbo$!}bN%$+_Z)3Jv{wMs?l=(RSCK{jcAEL1c(?$C? zk8cb3Uv3kPO*9_SI7H)Snqd-I{fB5mqKPF;l(iB~VnWtSG#Sy{L=a6!G&#{!vYdiw z%F*tksfjG}6ODcZpv&orW+R$`Xl9}riAF#9RqHH7vkrntGdq!<0-`xGJ(1=ALY{{x z?P6Y{g^A`PT0k!L2#^{OEl9Lb9&OZR5u!zj78?YS<>Ew^@QIcXmnx6^Py=T9GIrT8U^+qLqoZB3gxLeWF!~)+SnwNaz1(^(+F>nnafT^MKhc5v@bC zF41W6SEm~gZA!Eu(Z)o1@y8r(oSPKUHY3_Xn$5GAL|YCb6Kzej9nm&2&=!!d%=SdP z5bZ#;6VZ<5Sd52g=OWIoM7tI8?nHa!Hu-?}BB~MXO>_v+K1BNy?OP0KzryPPqJxMI z%pLQQA6%FnN>m~`jOd8efavf-ealY(L3QCBIWG@tIq}5AR{0^$ z{|c0NGGYcUX}`o%j9!|hc7%9pc}BMs=)SSe2>?fWpYbBn?;$-U(&qurg@%+Rq5idZz1o48zi^zT@CEH(NABg!|A?6d<32Qh>xT*Iq?Yb{lq2W(}~N( zF>!_1Bd!uV#5LlE!sZ_V5Rab!rPm`s?51+jolo2*4vB*yWs&@Cp*qCJ5qF7?B2I|= zic|avXueje|HQ`-k6HhTk0(Bb_yppUlKxcU)AFUW9?u}Yf%r_~ONq}S zzJT~_;`4~lAwGB1(Jap&ToPYMd@=DwrpZTj$&h>*@m0i^6YKDAzE=*lUQKK{pZJ<$ zS*|0#elR38-AH^V@lC|H65pKp65nD%mZ0L>h;JvpW1uPYcM;!Bd@r#M|D*P{BcwLO z4-kJw{2+1qT0cbmB=N&(6Y(R&miCDsEi4}=F3$gXr%w?-Py96TvkLW0Vfma1d3-$x z#4l!-DT!Yuew+9e;x}~pD)DQ?uV(|!&1_(A62E22ysvkNKO}ya_wwV#D5ZhLHr}}m&D%?EBTx8*O?jdx5VEQe`l8(e@fyXiZT2|{5$c_ z#J>^$Li}qUKeNpGGW+~fVB){%j7$7Cow11jA^um34fI!n-5md=uNmZoF*zldBM{%zLF(OEug zqO-z~%}R7ur?WDhRZ}IMRfd{YE8?s{XKgxb(pf9h6#Ak1PiH+k+tXQ}&SrErptCWZ z4Ha-B3z)CA)qkYiw9sr$XB#?O&`}krqbgKxcP4JJQ)jdfNi% z6zBiWu7%ldg|G*my=Ai}9oq;B{XTRo=hM*^V5_vhO)Y<24y1DuorCCvbPlG|pmPYF z5}iZoqzV5pI{C@Jh?eI6G0y*V%5<#ePp4AEtkEex{LR;-NvEYTI7J+njxR5-(6s3U zS%e}^MCTYfF`Yi04xNNfH#1hK-ayvnQFJW-=Mika$I>~D&IxpmH+?>m69+bQPNs7? zom1$XN9R;JXVW>2&Y5&hr*lSbmao!TqXV;xaBD)@k zPX0r!cMQpQ(YYtRq;q%C%e_Ob_tQ;p&IjmDN#{X2pV4`U&MR~trt=h?N9a5*U(5e= zY%kE*o+yMT3*l)x&(nE^j_m@bH2dd@))(l!L`V5QkMMG4qiCbnL)S=XLRo z!uKs*zD?(yOjFF_JvtxJd7sXQbUv^qMb1d)V>+MG`Q-o8e@^EwI$zNFp3awazM*6J zpH80qC4Vb^XTJG8@B^LS==@0M7dk)D`FSu$jlXyVusFZd`IF8c=3BVS=5M;=(fNn& z*mTkt_dhze5o9)W$I1hy-K8&mcO1Io4&3REPj?c!6VRO~RnoP+AhV}CaS>rsx|7qL zj4q?0WJY(2!gwmWE6|;q?gDhDp*t(xY3a^Dce*0T^o1}Z-I?jmWS4o6S%&1<=*~@d zcDi$>O1kz4U|rbAi}QbX9=h|Xb>5=)`G+DbNOwuP3(;LvHnt1U%|8X8yBJ+N_R}ra z&>}C9#gTp~x=Yhtj_xvatqPPXi(a$^WGnZnvbK@oXNx+l}!if)tc z)^zuwyA9pl=x$4QN4l2$>26PVhrGLd7CX`1MNK;o^mKR4!qVNH?p}2FuuF5_Gt)~h z&i~zg>88i{{pcP-cYnGE(LI3ffw^TiHS;a%Kixy+ewZ2LV>p6tmF|&rOKKV^^kuqv z<}Wlg8Pw@E28$+*L-%O9ExK*Gt~8eX>G~;)^$F;9>4tP;HAO>BolK^i(Cw==-va0! zWli}wk5SXHbdRTdT&9%f1iB}sz0l3i|AqZ2bg!m+DqTCq(>;yu>2%Mbdj{RJq&ahF z&GY(?^yiA_rBv7p=w2?(g>)~XdkNi(ttoH4l`Eh)Ovr` zdohNG=vsQG`!L-{=srf*l7DVvdfO4y-IH{mru&pN<@f(Hbf2gDEZygF`&|D5-OfAMZY@# z=cD?F?x!06$8<;YKi$vhej$DSSDHQztR1j?w^v2^MCiR+{~8lACjr){vXMNbpIvMX}|j)$ylQ{$v7nAS%hTV ze0ItBB%>#Pn|Lx22_zGfOiGd$f6UmLCd)#ROinVzP}nI8{nR8gD*iMi(~?Y2lIQ=z zV1`1NiDWjCnMsuVE%>a~RNM?Cvy;q0V!J@rdn%C3O|lWmJS5AJ%uBK;$$TUWscC+a z1xOY&{lmQi)0Ow(aMh*o6Xvp7l~~FBK4Vo6E%BH2f+_C%nG>`QV0$$ljJXPTUHAvuWTCX$0mjwd;U#3ebDq)c)c$q^*Q zBY-W)kt8Jr9P=q4sgTr3sutG9W?O*F8YGT{=AcKCR?+H_^htb@h@>sYfFw-qb7Kn? zlXOY)9yl zo#c#E9t?xzERyp`&L%lmHs|E6`Rbidav{kDrp#xp`cK|^35imDa;bdn5rE|KVpLa> zTt{*h$u-hnT|~Inggn~yBsUcHH)hI|BsY`1M{*0vb0oKtJVbIE$vq^uliZowliX2w z-9?h0{EL|Pl330sxv$VXK=NQ7JRkYPBu|n&Lh?Atqa=@I(F%LpAPV^@l4nSs&JA++ zXN%V7Nz(ML`cLvAi5>e%UK&IrvHHIT^BRd#eeycV8zgUz8SrhAcS+tERpuSNPx2GV z2P9vRd`R*s$w%tqW0Fq>y<`H(XC$9ncX^Lrl6)iMuSmWgL?-!`MEO7Yu5kQ;@^Z|>5WCtwu9WhH!i(% z=#58jQ+ngmTa?}e^k$$pA-&1yO(d6z#YyN*nvX48lOFUe+tZs|%y$8LQ_-82-qiG_ zN%aF4dehM>>OXme8R^YSZzg(k(3_dwtn{=6$cx@=^zzD27Kh%P^ya2F*B~std4}Zq z=;`pE-g3PK=q*fdL3;n+=fAyt7ofKoy*25j<6n{9;`ElGw**g(g4zE67@ETASVm^wy!bo-S<*P^y^XW6Wj2{iZ!>yF(A%8e9`v@Lw-dcB>20HE+9P^f7na-7vz$+FyF#-A zy&Z?6sdZ<1yU^Q>o+baRmEP_{@}Be#q_-Ened$^9r)L{MVYwf@(fm*EfI@!|JstRa z2g~JD@r@8hY1BuPwk9?Rs-pztZ1G@1}u<-YxX* zr*|v8yXf6U?+$vm54GMoB;QT%UPZVkUjZBBeMRpN(0i2LgY+Jj%|qsxFJt}@Fulj< zJxT9zdP@GqGSYi$$oLt0@6vmg-mCPUqn94?pQmRhe|okB6fs}QWO{k>m%(e|>-65D z_XfQp|I3Ts+w|VaBjf{nkKX6>-lzAG96u00EV}rZ-lz0FF_+PPKg(KW`31c%>3vP_ ztAT;^-xLwPqn~El@9B?4?+1E+(fg6!Z}fhm_lqol9yrp=OF;Cr9rXU7muLRWhTh+D z`G?-W^mGU2^ZIWzNPlel6VV@s{`mCAHT(W});bt}e*!5d%rx|s|NE0F7^Ef9iBb^tB`Or^;v7w=IDFv{@+0)6<`s{tWbI%#`$p>OcKF|I?qfh%h_- zdE__;{WuPuY(Qvi#wPCf>cwHNf)FT6ISzlH2KqQ5cyP3dovUfMrf@XhFNp8IBZ zY=2Ao+t9bk;~;+&+(Ap?@*` zD*fZ>*XYOe>-1gv4f+oK;_#o(x|R9T_vi=oefoCzx8QlSkbX3#rbGWI`d#|HR8K$2 zSJmWv3!r~A{bSWSx(m=hu84U8{WIyGNdHv&C(%E75TE`jnN0sQ`lk=+&nSG)qJKX9 zv+19kYUrPn+gR`C4UOai`WMo-MHf>0g=J(6_z7EX^#h z|44rg{cGu8H)xge2KqNkxRL%){_o#H|JH#e{rpn^`ghR3NA|V_(7#K}p91LLOaB4- zI{aH}QU5X7o&xAUlud#DBOEmY{YUA4NB=SUZ_t07{tNVSv+qW?bqx9Pu2fAsuM|GnJU z0xJ3UKcxRr=37Mgg#H)wKc$~%e)^ve4CsGJ{~P-Mk8F2^c!y*?qob%vV~e^Z7erL=d3ZOavV$45``CDK^ zCy+7!VvUD24%WB>-$uZa%bzv}YeKB4u>ONJDb_?-`kP-xWlhq0VNHfL1=i$Pv=Ikv zSX1g8tf{f4!}>4QG(*;DhvexEaz?Bbv1YOEN+ z%iRBnM);S*T3!S>|F=7Dt%S8M*2-9`W3AFg!CDn-wN{phYhbN~wWiXHu&s@?&On2; z9@geq>tk)yD6uxc+HlCaG1jJ7BlTY}o3(6MTVQRAwI!B1^J8sg^xG%~6BNtTe`^P< zZ?Sg73b1yR?Izx9k=p zc-QcEvHXEvyh5z|u_CO?v0|(WE5XXJ^iM#sO#QcVEIIt^oJ*5Kjdc-LAL{}k9BX1p z3()yrjCCoNy8JQL%ZB7Dux`P+66-pwtFW%Yx>{LBz}L1i*7aC7VcmdrW6NXoH|wd| zhg-4k#JUaZjz)>4?|)3(yRh!Xx*O{r&99eppPEWUtOu}O#(EIz8LWq}p1^AA|6^E> zU_Gk6G*VsxwEQI2Q-iFqo*t5)#d;3w1uQxIYy68?QvBNoQle+yI3##<)Ocd*{adKc@x;j9`N>jQ)N21kFh=#{U=8M8P?~mY}0&5-;ZorST!r_+?pAF!Hif5iF?>!${T^)uG5BIxt~(As~;`UC4PvHm$ks9Hb+ z!}^ELBv}8_nUKynbjGJME}iiPNS$6sUI7|>=Rb<7GZCGU`mcC8lhT=z&SZ2{<)<^b z&Ow=`FeGyL@5tf5{oFg#&{5}nI@8KHos6pf)0v?eg?T1AbJ3ZZ&g^t%5!0-6X4Cu{ zGlv1sX=2SyM-_ZJ^U#qme|5z9>8P83Itv&VUHk>S2%W9yEJ|lJI*ZX+mQKU46rIKC zG{=7P8M^XWZi_$ro$Rx*qqK5bhgxbo&VN!b{6Y4 zbhf3lgUH*-xP6PHv!h~GJGN6Bg3c~<_M)>Zo!v#ho6$=n=t%L`pUd8K4xqCSo&D(S z+Y$=-{;i9+A4un55e_muhbW|GI1Ia_b2xVMd>%pPJ~~Iz3F#a~=S(_B(>aySF?3F# zbF45QN9Xv~*D#z&=VURByaLcscR>oEw)!+WryKbUlf(b$*mTaKb1t2;jrAO3J&(>9 zI_E3B-bss2XE1G)bR0TeI&Pz+qc499k54CPWkE)CE~OLGsp%wiayqGa_2^_RzXB`H zf{w2I0;pOmoj#q5>5QeL%03;{3zUnJFH(Z?9jgDG%jn!l=W;sN(7A%n)pV|;bJf60 z3(D(SI@i;Y`yaj18(KmkzlqKrbZ(}j&ir(4F|lr=bGwFVuRH0eJ0Cjc{NK5UjvW3Q zfX3WU=Oa1~(0P&0gLEFJ^N>V&n9ieg9?^tqQI9EEuj>gq&(V33&NFnLqVx0srf5~f zXAQrq|8!m$@_mWU+jL&0^BSF3#QN%x^>sRLiqdoe<^GleDB5@EyiZ4+|LI5z5WP%4 zpz~o1lj+BFexUOSov-P9O6LnYpDC+y)Lnqimogoy{~f9S3iB>Df z`H9YN;`lS2U+AbVFogMCOhf1Y&R^K$(D|FrKe7aQNc86as~nqf_PE&NV~^KP70lMf zU#$PZ-Whu$>}9bh#-1H}672tCPl`Py_GH-Vmp|CL{$o#}Qj)B&rT*Jfw^L!8274y# zX|bi|+p7MH`wZBsFAU`{GxluQvtZAv^^$E1z@7tpA?!J^=f$22dmbU5d*Ck9`LI>Z z$DV(n$6l~y!(JGB3G79%7sFn32+-gcZ!reBB=$1cOJOfPfGLyCd^zm(v6shQ9eV}r zRj^mY);B*5279Rf+pA*B`Csq+8rbV#uZb4?^f8`VsCBq@(Q3nxb3ia#NHlzhXIv1?$jb1CH5}Zr(y4k zeF*k$*n45`E*Mq+1+b@yvN!et*!y7bCjip|6p3yD*awQsLD;Gb3`IE<`vmO6u#d)W z>i<#LM_?a0j4|Pk!9Gq%R0~i5#eaN@#6A&Q>c4%G(VQa5oT|ZUTTaJzvCqIh8~aSL z{!dwz=`7=Q4)z%AbFo#~$39O1+Jsd&3){w)7GU()j`8)dBkZm?`q&}1)c;ZIjj?m= z1Uth{v3tY(hNl=Pu`8VBp{=pM#qMK2j6D|n8te}Rka$9@X?3G63z+>xEv zT>$%8>=&?~!&b$AkRJAn*rU(?_AA(LVZVy~I`(S{tmD3c{pP^2QDV#ekK~X2F81fx z?_qy}{XX_b*dJhzzW=d59)!kLF9Nb0X#r|oUkK-y*k6mFTL8A)|7h@cI8Dj@9{YFf zAFzMM{!zf{{IC8L&o8Zvt-1iV>I1 zQ{l&%0B6ERgQL#>1~W0vj5w3vOo=loj-33R$#8}a|IQRc_^EKF!rnl7)@Z$O)--vl;*YZqjw$}mdN>=1a(#o@u=Q%DI2+?^ zkFyDmD(pC$;%tVqCC=tJy7DWq-s-Jd8Ala=oNdi?J0t9Xvpdd?IJ@A;;a`Q=xwVSR zt~mPeFVXkFF_quh3uhmkq5FSlU!48g(1!m2oDR-`I49v8gmWa$!9sfo&S5x*4h1?K z=ZL{nVjYEZEY8t5$7oKysN-->5E5PgMLx0h#W@-09Gp{d&crzt=X9LYMrhS0=<~mL z{SW6X969_q9DVtNGe$9(U6tHyoIZ|&6XCcxK8~FK6@OP}tKD*0DI3<6MAq5zd85DOurMjB{xt7IK-f zUV(Eh&XqV<3r1RiUhFjnd>xLe{5aPeuN!f0YGtFj1^*+QTk#&mxed3%xgEFp*Kr5V z-#B;Tyo7TX&J#Fy7Z6M?In0P(jDsi5~ zc}_G>;XIA=jLH1j7B5>WEkH$l0q4ab{mVEX;=F?M2F|NOqUt}+>k6Z{;!T|QaNfds zM@-TJ6z1IlM)dE?_(7}0X*T2soR4w7!ubT}bDU3cbmce9U*LS%%Es$!obPbH!TDC} zB?n>t-e7*j`3>hMoL_K$R!Y4~s`wlEcbq?QH7uuO{7sQ({m`Y#~+(n068qHF;i{qN&@9N?&;H71h`mZ-tPT@7~?+*Jo5WR0s2rnqb3O4)bU8l9)K0F~i-xa%vtj<_N2 z7LAO%5$?vg>e!FFN$ZQd8Ls*MSL3(D-4=H%+--2x7XhQAY=^tO)+nAGOq88)55V0S zcOTqcaQDRB71!MSxVz)-G4N^x+`WwB-bUD035s(+-2GdnOb^684EG@1LvU67Z+UP> z>c7Aam+=T=Jqq_M+@o=&+PlYyRh|EFkHbB_5e)J~+*3t=67I=LuP~<=>uI=W;GRB& zSLc7h{Lf&{#&vMd!BwRm_gopzlkxm!G%yRdqoxXDw|ZO`HxP}7+cj3-SVP<#H^NPE zW89>rGS(ihuKXrMVHirIsqvP@?c=_OI~MmY+zW6oYhbvl1>jzUdok`MhEp{H<9j*o zjks6fUW1gZb-Yq+NP3xnX_#C;3*9o)Bv z@FVpf_kFxca6iEP3HL+XuW>)Z{Y-p6#{C5M(}APx!{@lF^5cHd>T$ms%K01I?{U8s z_wR=EKPa$D^+%;t!q2!3$uGFS%k)>=-xNk$|G@nV_s=1X9R3A>`w!j(xc}mfizlxD zt==0CPrm$>SPd24gm@DveoxnbQR;62@FvBZ8*eha8So~@n+6ZOsqm)2o3hQMO#p9d zJoQ_kk$k*q@utU{PH7~%LC%Ob8{SNKvospKnOiSBefSsU?09qHjnscp&SefQ%!Qe>?P{ML}$KfrH zw=>=fcpKrZh_^Q0N_cDFt&F!C-YR&jw#)+(ywy#tH5(<~Nb$#82XB2*suqB^Uh9Ro zflTH6-+tEK#(3M~ZGyKI-llk)<87wEva5Jo;BDE;Cf3$?+v07bm5O{jWokbiHQfPk z$Hs~$_dhzyE_i#2a#tC5lW}($_h`n(9d9qZL-6*-I{iLXW^ZXCx`zwfo4=olNO)^2QR^M z@j^TgPt|-peg4N&O`)X~eS{Y)jZxyIcs;xv&$NIMQ;ByqUWIolUQ_=s#Ovc-AUtC= zgWki7@bt|Op0ofV!MhCaO1#V4hAhukjwH+dSBh(47?T zQM`}w9>aSD?{U1R@tzRcCtDu8r%e9O;5{#c96Y-g|hj z;k}LbI^LUjZ?wz?{8lRn^E)yQwE*vZybnbAA>Ky=WFz2xg7-7tr+DAveTLVp>vOy> z@xB<%FD*cA)HitFDwBS$zSFWY{ebsl>xK7ItH=8VuPNid;{Ap98{QuhRCNRqhU&lf zH=gN?-ajpm!gR->J0ab1>5fl#=oO$lK}*t%bpJzlVi8m?(7AOdX=S>T(OsDCG8Ea-Yf||7$eU7>%m`bf-7^85FtF%tUuix--+AO{UTdy0f-c(abL6 z90orZ-TCRxO?O_=&(n;?WNv{J?E-Wcq`T0-+F26MUC%RkE-Inf_bhn|q6y#91{qq_%PRs09a#zc27x`)x-o9=;h_o2H# z-F@k*E}$H>?*RiBx(Crcq?yt+T|mi)8sy=0j}q$RA7bmjan zvFM&i*QR?C-E-)kO!rK>r_epE!P7m}@Sjfi3{9(Z`=5k6i|*N)S?kXg{dsgPy64j! zGuo=p|3dE2?a_7VhIBo;0o^WLU*pXN3NoUb(2WOFbW@d#&Of8ur<>EQ=oWO#R&T8J zU`kgNf4Zs>80$rJAE0|N-P`D1Lic*Qm(snG?qzhZ5b)*0`Ov+J?lqz}_y65%>0Z~e zwMe=*(7jnO>Q_K?Z!-E@=&CNDrh2b#rz@4edk0-9{@uGYK;?N4-TUa?t2BD0_YYYg zr28t}hv+^-x2gY+(|x3|(tVWfV*{8Z@C4nb=<50}nx_W>5%*6_zb2h8GlOrY4NARS7jex|NdWOQ~!Nc{{<{9KzYrGzaaih__N{9 ztgOm+7W`RTq)cbWp9g;q{JHSw9O%WQzXiab7k_^I`IJ>ch*jSL;V*>04F1CSi{meX zzZm|agZ&Ytc`E!R@Rt(Jl4k8o4-qb_WR>A^trC9){LS!J#9veNE8(wTN%^VM%WgAdojr?fC{&ROx5|{V0Ome3x5~U?~1=W{%%9oJ@EHzkp{mv{(kuT z2wo2VI-mXV4;1B43-AvzyLt%z&G?7nd-#XppD4(~@sGei4*y8}WAKl{Ke~-F81YBC z0KRGg_$Rbh{FCs{!9N-Q4E$5@P38Ab!#`a!wEyn>Gx5*DSM^`(6_4%$_~+u=_~+qU z_~+w~s{aihzoS1RB|G@8nrh}Q{>At{et{q0C-|YbMEIuo>-|abGko<$K$`=8K9o#} ze*u1l-){i;x&`2?`mbG7^b7GXQd1rM68x+1FO`Uw;a`D&`2df9<&b;#eWR{Hv9+hZ^yqE{|@}S@$bafCx7F6&w!^9@bANy z`frwi{~-QD_>bT}JUW3#^;CI1j{gL{D){)S1>irWXmzU3;6JOTI@{;*-^G6c|4sZC z@m0ace+hr+{O`Yt|GMa3YrPsOeEs_${I|sPwv0n9K=HgM%J=c*{O^CL-IeKMqUrHJ zA)E;RQ-b61KOgS{N`JLU@3xS36>^UW;BB?{=&Zk!43o~60A?K62aO8D-*0nAoV|3 zRnh8vRwr1KU=2;xEKn_Zt-+LF9fEa5sTzUt+JIn7f(;2aBiM*wQ-X~NRPi4$w@7i^ zT*fVo?^XocHZsB11ltVb3APiYc?$@3B-n#sCsFP!<1Pfd5$xK?>Q9mEJ|yo+a0tO( z1ghW@>@A~e0fO9*;6Q@?2~6eJJ8%%e!7auh4<$H?;4p$C2o6_D%^>H0EgwyAY@;VQ z##oOVLY_cy2f>L1KEX)@=MbDsa3;Yi1g8_6+9Cp#I+1ZNNF&n0jO z&Lgl0&KKkuW!3qp^FM*zPDOTQ^pr-K%>7Rg5L`wO5|jiHK}HZ0sAE5Y`4&KJtZo4W zs{RucgHMW}BDj#CCKyZ5Z~0}1htB`OMFf|Khsrz*N!{%GGD32r60iQpE3n-xa%?MQH&5pFj;cM`lqa2LVz1a}iWL~u`o zA-I>|euDcHUNb*H@L($&--ijFBzT12F@i_6N%=lb@Wfy$D|(9HS%Rkt%>93xmD#r=1JKNLWgM(`IwvlV|2G=lj@Tf=b(Cm))fZKau7H2PZr!f6R-CY+9NM#AX{ z_07)^ekK!f7IB=l8I5Lk!ubg2Ae@^}6@S9Hl&Sp}9nK?~c@@6hfpC7&EI_C#KjDH# zzi=yva#6zN2p1zyyavkxWz{+F)CywVg>VnTU0W;RZiGYi zKirdWAHux^x%W^G`x2^ae?s#sARX&K!jlLOB2&l=L7 zLwFwHxk}S!r8ZWzfF>NFMffOThwx%Tn@|q+p+o34078$@7eUv5kpq)wL|72UggwzG zgsKs!KgFE2GGT5sC7~+#gq4iu{2z`bypV9H{)ck@*F2XH-bi?j|%GO=?teZ!nqPM0hXZ&4jlT-a>e*VUYT-8bO-VS9)06T){1KO%gO@I%7) z3Dx0Wk+cu3$b_mX7_UzWzaspM@QX%6`1t@y_@%*oO{h=)gx?PNeoy!>;SYqrh_8AD zApA*2-317LCH#x9G$YY9L^BZ`K{PYbdPK7jEk!gd(fmZS5zR$3d*egXi=gCi53?3g)~fMxJZj9T8wB3qK16&0fRA_`=4lOqE(5OAzF!OS)vt)mLpnT zZ z)?JDAAli*cioXOh`?IIP>`ina(LO}`6YWbhs`3lx0mkJZqC<%eCOV|`H4KLl9X?uf zBvFUxD5BGdjwU*Z=oq5og-v=vB(DJKqg3@@^wI+KR-8<9iqW5HqMuH57Ll}u=uBf( zEuaAqolP``=p3T+giTsN!=_B8{zp~|7JyAu5IICXk*oA-V?7zWYN{LqqC_+yQA8BC znHXzIlnG3Agw{lq8=)k+n5ZI>E)dm5KbGi1q6^eiFZLqkt|MMTbUBgK|LC$7(2PV^ z5M4!dhi9KlWBlVx?QKBb_)K>sRkGGCQPZ&X6{t&79PxOp( z*PPE0y)4S-iCz%lMHydeMuT~U=q;jGMgJPn8$_=w>j>b@RwjCz=skhGL-g(dL-an; zheW0Ys2t2IfZFFzh{qxNl;|s>&sr~{&xPj;8P#urMEIKMH==KdekA&q=zF5?6kc0@ zP_j&kej<`y5dGX*#r;=<{GF(Y`v=iqq95r3M5+ZC*gr)7D!Jv4$0eSIcs$}Mh{q?M zgm?ntiHIj89##JpXFPGsLp&)l#FG(E-tuUE;S}VQ#8VOfmsqufVGQxK#4{03M?53( z^a7qiVFs{f_u`p}=OCVicsAl$M@%XQ)dCtq;yH=uCZ20xB_65&#Pbo~Mm#_9NyG~f zZ%(`*@$$qA5ido&F!5rIBk>|K>aPHZ8_g2Liw|)wIgkapH1RUT%Mr^fK)YVOlPeIf zMZ6;Ms>CZ1udG+CQeCB$iB}_DLy})zTU8Eg8tdA`8xpTWydLpT{g2lt-ax0JV{Jsd zDe=a{n+$k_b~8OyLAM~@pLk2+U5K|L-kx}C;%$kyQB-EPiMKP+cOc%0*n9=77>4S9 zyesjZ#JdsiA^R|@3lQ%`yf5+I#QTiSQ(Az|`2gZ0i4P=JHJ@1B{}UhF;)xF>R+XRl zFwLOkBTQ~b5uZSOH1To7#}FT@mpQVE;|CgIUH^$sCQgV?A-0K6B|ewc7gc(<+G_;y@T&VvpEV{@5Ri5(*$9jy09u znUwe<;vR7+fK0|*M!5o#&x^Psu8GGIt1kjtTH*_cFC5KwG4VCTmk?h;d@1o|11quq z{+C$Qf8wi%&Ea2mlK5KU8^m;-jMtkeHxl108r1?CCGjo9x3*TJxt*jb3wIEIMtmpn z^Tc-%KSX>t@qNUq{)^+ihVy>n2Z57>cZpTO zCw`Ck{YFrKYBxS4{)G4=;*VR6(SJIG`JA{xenI>L@t4Hk5`WcLiN7Wux%n53)PH6A z-thcL{5$ba#J@;5UH^%HCH_t4uQU0B_%Gs-;xB~yD`4V(NSgBguTm!Ckc=n7xO#QT z(D^@^kVI8`64eDr^!LA_nZ)2HBbk?Ea*}CDAW^4%k||`=_dg`6{*(My#%Y?-_)bSM zlPIMHB&r3F%-8}*W+s`PWEPUyNQUZv`?)7`kf^dxqTd2Y<|dh^Wj6ftkt`~h`DI*y zWI>XJ4FAF;`s8mki;*lt(r_+GqUt}%63W!>YO<7QmTspaFH5o#$#Ntsk}OZMf;LHp zCWn;;xyq2&YFsfc$?EiPBUyu@3A!e|OG(xuJ%D6wlDA3LAvud=U6OrB)+5=LWPOs& zNH!qZm}EoY+-Sfl(@jX^{zvc6<|JE*ehV45Y{4X3%XFmvlWa$_E6MgGJBeurk{w&H z8r3H3OtOnwj%MDCWKR-R{7F%Cpky}%^DAEsl@AG zl0!*UJ5Ya$=ddC92$G{nj%-b>p5$nfV}>xtk(^3$JjqEUCp3DJ6BWN?E7OxnPSI1v zf0`&yC;1=A86;;8kOME0vq^3uIfo=CIhUkMavq6Iaz2SgGG-86s7(D&91>47?jW2@ zeG*meNdl6PBx>ZLSP4l_tZC~-qKbcuAt^{MBPmHPB&kTolGG$p{6{bs4B;;#xrF56 z*1Z`?)cM~qUrur@$rU75k*NCLnnZ>L>6C zl9x%IBzb}4DUxSNo+dH%Ut^vldA`LP{uh;?BAVa-B(IRXE}B-TCZD-!UJBtMb-JP6U4NPZ=4%J^?2s^F9SPV$EW=w1Dbq`~|>a3T4J zL=OK3qrB2_WgL%msQ#xDl1@kZAJVBwCnBAUbYjv;G;=!X2xmGu=@i01n=R>-q*Dzt zS9zxYRd^LkwE)s-4RU(Y*-2+0okjFBlFmdrvjVpZZ$HpfwE)uDT0Q9;r1Ox@Njf*F zY6Qcv1Uava`uCrt3y^L^x*+MwqzjQQNxCqpod45B1gScO{g_dldk|8)XOkuFE7 z>Obi+q|3H=vx?3(k--?j-uLu@!E!TH_~lMcO>18bO+My zM?&Z*JCW|v;7R2bKz)L{4l(Rbx;Lr32&8+Gs^YI0wC_Ho`;qRel@gb9e`7t6Uh^Ow zM0zvn!K7W%LrBjeJ(ToB(!)rPB|V(n>D{E#2+})A?;1pGav)XppY+}#=KDz>BYlAMVbTXl9~#a7 z2kNM9h8;&1lWY{)ChQKh7=fF#4$ zN#7!ULzHi}R?)vr`i{Z8+X{ktpY$iv4@f^J{gCt%QmOxn^J5d`)0T(yGo$%}^gGfo zNxvceiuCINp~U)jFeUw7qWnPmW9w@eex^4r=`W;zk^V~h2kCF5zYiP@>`x>7P5KY% z{|x}7|I!;rbGB>m$%{a5e0meApuGuNFuniKn`q$JxX_z~-p=$UrMC>d$>_~aZ*qFm z(u3Yq;yZOOn+CD$M>FCWuZ+dz&(wjjiqxff{XX?Kog-z;zZ#LsQ z2fYR8%}H+_v8on8Z|-Jn0Q98z_vWKFf2%S21?e@gh3HAm?=5Wfi_%+ckU*oPw>Z5e z=}G<9oJ-MLdNgKPdh63$j^1kYmZ!I}IIci%MS8mOYrG;{h2E+voMu~{-a7Qwptlyi zHCttCrMGtLMQ`0kLvOu-mEH#QwxqWqJyr1OZA5S5)~j)$w<*2N>1{U92xbd4Ro1QO zZAWiwdfVu%lyX}WYkPV-3Vw$cFY->tx(mIt=sa~^vi-|~erZhfewFbzdZzyCo%xeqQ{?}m_Yb|l>5UZskvy|;$i^cZw+*3qvhm4u<<~i9 z{~?=(Y$CEL$R;M6jBFCJNe3<};cRj;ee!ShWK)t&O(w4Zl8?Yl7s#e1o0)7nvKh$K z<&W{2k!&W-+jch%#ZOGOq+l*`jvW>|$B-^Ov zY}v>*A=^}Ibga$Ewj|p^hf{&JBHMa6I@z{lJCSWirfNRf_J&P00weECwkz2#1C3eB z?qmm&?LoF5*`8#3lbIHvsP-Y-w`CZNWc!n;cF=0b4k9~@?BHffb_m&_qgQme=#L;X z=YPFFN0XgRb`04WWXF=7Om-aE2?9ReMyR5Ja`&ta?ho+;!1WYqWn zWap4|$<8IS$<8CQ$j&Dl(_oal-sg^<}jkEx=$H}DlkF4S;vS-MiRt#+{mEp6k zO!hq4D`YQ_y+meS0R&0*vcbGc_Bxr|{|E!w8)R?lw6*4K^5)ZjhkPlrcgZIrdynjA zviHe8C;NcxW3mq$LNe73T4tGkLiQ<{KKZwLvMYceVR5=HRe7|eHMKadU8 z|LjMypN2P+>=&}X$$lmKgX}kPH!VPNAp294e;LmIBOjOSAF_X2jk4zYEr5JH@(Ibu zC!b(=?SlD_X2>TdpOt(P@@dE?C7*(PGV;j>S&{25Kt3h;)Z(jefynj!PXi{OmV74i z>Bwgwm-;_=V)GdX(aF_Y0QoGfhI}^i`N(G{pPPIRG0jOn*C4t{Qndhb^$H-d<|ki_ zd;#)>$rmJFXuvPlMaUN&t!aFhAYZ(7SEFKE(y%Q}z6<#>HlB-5wLhnSrv!3eAcO^fL zd^hrg$#*B;hkOt6y~+0^A1VH=yX3qt`2pnnk?WJcVLp&tee*jM>k#sz$PXnyocypM z{SoA*{u?~`(d5UFkNWINQ^-#uKY4VNQ-_#OCqI*1T?A>2+6`6z zn<@F(&b5-zk&S50bW9@7lBqoek=LY z!U&A~Zt{Dyi++~wBfsBRhw6X+5cy-|50k61PyUFGtGym4f5Lb@N&eL6tezo%gZx?Y zm&l(Ze}VjY9aJ(QH|PKSW%Ad^Um<^Wm|r5kKHwyOll(1m^%l@7$=@-;dlXF>e4qRm z@(;+rA^(v4bMlYKKPCT|{F8xK<3j$~U`qZ4`B&s$>Ok@YlB;(CL4HgAqX^%Te^36y z2uy9rPYsOxXQkA8@+-x7oXSD^V;* zv4Su!-)1ZFiYD`wDORIcg<@45qTK<#ht2oDYg4SLOlo!J{=Zm5{P|5+SFai~}irZ{8> zaF{67`QPMxB*m!|M^T(eaWuto6vt2;s{uOm<0(!UtvN|}PNq0zK-CaZoJMgb#pz0^ z@;RfmQmEojaaKDO`5cPtD9)uwDVj&3Lvg<7rT#0h)q*K(3ZKHE@F?6NhVGCYP{b4= zMWmJHNuWp!Pmkgvij1P7$SF+mS811KH)@ItDEbtt3k>)hf#O1gxtQWgic2Uir?`~j zGL6)q%SipFxQasVd~7K)MjZ!*7);&vn7L2;LW z?;OsM;vR}eDek3skm5cHUH=7X?thAhDD;2+rFcXU>YN{=c$(sIiYFjr}&WK6AE?yr_h)G&GIQe70ponFTSAoj^ay-uPNmGub<&>D83#2NqtZ8 zBgGGcSVE;*fH40;IU&Wblua4`jp8qg-zolRt%6kNe?k6Dp(;PcpnA(IKx-|>Ri<)0 z8ONtI_dnYDA4(`EqMSqk6E~ycEGLz5GD>s)*ZL_ar=gsZ^1qZ*QL49q2C4oUL1U(E z1j^}#G&4}HOF1LuQj{}M&QCcr>$Fi%~8}xd`P#lnZOT$%<0H1yDALEkU{XFo4pW|I4K*SCo8~pi!<*I^T#pJx&fSGa)%C#xiq+Dxsw(IDr+NJdy+>~;2%FUE-yXVSXe+x{xRja4mx=Da?n>G!~?I?Gll%`PbK)Dm8-2doR>^xwj z+_jM@cQZV@8-_h8Kd0P_@&d}eDbJ(ahw>!KeJPKi+>i1=N@)b86o1Wp5apqi2UCs| ze@W~x%EMb`!+#{@@svkV9!q&NqG2c?#vJl&b7g zo~B)NCTCKfO{wa?xD2&`@*KgRYfR@;s*+AQhSH*RMDECF>y(t$rSz1GCiE#&O7#jr z8B)d~M6Fe1^)4VnkFui7C{^XB%#FSrfJI+Z_9;#M*HJE{yqEGK%IhgFro5W+63WXd zFIB#Z?Xm$0JFH^or`3mLhl&@0C<&W71$~P2Pv%S>{%}DtU z<%g8-Qhq@B9_9Okl@9ih@*~PmDLtpIeo9^cDb;&{n0}`GgYp+jx%Mf4ZDUdX-U@<|;;+*F%UJ)9>OYkKP>oOd zFO`)2YMc?5O0@tTqEfd&R1=!%L{#d|pGwt#D%A@FFc}r1(OrOQ3MzB{*O;lP=Ars8 z)l5{=P|Zj+E!FhmB`u&`R5e4(X(G-{H3!u!RI^bH75_>Xe{r9aYHkrm-2zd~OSKr) zd{m22%}=!u)dExtw#PGstxmNv)v5xJDl>f_#lYFDZqsdlE?X^3r? z7SN1TyHV{ywfn#-$~{{E)!tOcQtd-^DAm4H2T<)trHcO`G}VDr2TQnv26`&p1*i_A zI*Ll2|EZ3kI#OfwLvl3LF`7!}d>qvoRL4`DLUjVwN#c0o07Ip3fv8Ru(`i(y3k>CR zCe_(u`XALu@fXcGRJ!=f^nB{ERAZ={huNZflBz@1Xl$w;m9&G(rShp%{io^P~Ap#A=TAX7g1eCburZ? zEs{#t|7J>cIn|X^S12mId(r~5d=1r&RM%2nPj#IRr&e*p5dJ2rTd8iQQXOF=AN}dv zPIWJpG=l0*s=KM~8uGnoi1R+GN2uM=c!&8cnR}MRIgFJO!X?&E5jxwt0=EiN&VL=dW-5q zs<)}$6YD!v@3u%`d!On9H68W2d_?sz)u)0V)di?NryiH8ssBGwHTC~Hs;{WN5#-nH z(uDTgR;K!%O5gub>EbVdpQ-+$`i1Ius$Z#o)4q}k)gM&m{zq&6ruv8K|AsREmwKF0 zUiEm?P>)YNG4%x0|Dm2xFRj^@dZHnD66(oR&b4|45MlBm>lD;eQ4h5Mg`BztP)|d> zC-t<{D^O2Iy#V#})H747;!i!Jf+=Ap!#oT1T-38ttFli$n*uaXayZQeG>VLh=AT;%I zEd%xPhG#|Ujj30nUY~kp>NTlXpaD0Zqn10LdUNBl<$$vhsJEuxW}u89FQ&eW`V#6J zsV}9ziuy9@E2uAT37e7n$|26Hsjs8HhWgq8ph=bbdTJ^D&1bDY?whD@r@oo`R%&Sh zI{({792L2=fZCk@>$|BRp}vRue(HPMxYYL<&IhO;qJD6|KrQuOM|_m}iN-`N=l}X~ zSw8?3)Ih1KW{KE7_XP8UlX>Msb8TUb^lNOI`x~>BlTa9`W1ls z9qP}h-=+SD`aS9osNZixn3!pzW z{b^NJ{r}RRX5dbLx)v#>8R*YWe@6PVi0@4FXCAW7DoQE-I-fb{&qIGs`ugNge{O|u zpPBx=^i}1jZ+`#ZUtoxBA^Hc=Uzq+n^cSJu{8y|+=`TlrG5Sl;*hWT7P!A^tE4~D1?a05Kz~j8Yl)zL{3&~~F8yuj zuSb7#`s>r*i2eqG*|6mid1LyU(pTqyv-ZuDJTl#a{+9H&8q#dt%JjFTzX$#8=_vGfn4f0Td^r+)0d?v68e|Zzm&eY|JPBjpfAN=rV{09ljJoa zMx=j}0_gqJ^`HK&MsqtC?@s>?E}Vw`os9j6{#}f1GJfc|^*&Hay#{-J_t z`C}nbhkyFg0`!i3PQPLJg8ujPRsE;`75#7Ne@*`z9Yr&I*H{hP5A=Vd|0Dfh=>J6j zXKfOsko;$6@TaEt0Y0X_qFeu@fj+3HlX) zu@f;C#!k%GNf|3Gpk2|}$r!6|el-8sDU9!wMl&^IS7hve89Ntar(x_YjGdOTGcZ=w zf5uL)VC|~Ms`Ec%XJYKkilkkjHqFY|*%&(qV`m@2&pCiGc5cQl%Gh}ryC7rdW$gTn zoo`?jT4@2zC;0zzZ5F_e8%@^^^Al!fPKBB24Kp)yvPm|~%*>ovXh{}X;4m{YGcz-M z$?s{+`1<};TdG#~>C-(U-!r4Jx3!4eE=o%_|E3D9C1@>6tKYyzQ1K)_Sx?_Wy!h z-^|Pgv^Jx)A+3#RZKTq5)+V$z)jep>=90KY0}y*FT07I)n$~u-MEunx%PWAIjqPde zNNWd$*9@`*h%M>6(Argu-DvGTy4IewZl<*tty5_2P3tgP`v`JhS_jhFuMeiRKP|Ni z=tSi?h}I#r4pvU%r*&uppf!fpSXze*&k=GRSpsMsMe8_m9!={QTE}Vz{alWxb)rP| zDnRQbS|<-mOXyTu7tlIQ?9*wTL+cD$XVE%SQAt0v&TfpxL+e~x=h4zTe}lP@*0r=Q zqIEf~i)md(>k?X*>O}LQ>fh43g4R`HTxrI5H7)bYAKm$Nv~Cp4^|Wr#B+?J9o0?l% zx6pc=)~&R1TDQ?^(`wQ3Xj!yeS~e|5CpOjfSbXKwc0jAsw`qlP)vExlm{uwtqyMc; zrRc0Kt-EOzw0g8kT1xh5RikJ1c3O9e|Bfb0?7JG9R$u=g5YN4|?xS_T#^|v>Nb3<= z578Q>|Fj;Z^_WKLPM)CkCaouFy+G?JTF=sYn$|PA6ODOJ3Ozqar1c`L*J!;&>lF!^ zRX~m6Rr5sDOF`eJ^@cIt67bu!-lO%7*zYQ^?)iOM>g0#k2L}IvLLv)B1wekF>s|^^N3yMeFOKtZ!+3FaGaL6}|bF#(tvp2d$rJ{YL8-TE8~6 z8l+_DQy^M@%I#kopql&#Yhqgehczy(eK$?V@-`U3)VDPGh$7PH9gjJx~L+VVTfcVp;h{? zoeD53)@)d6+mAK7VV)CfE)CP2&x5rv*1T8?V$CPu`LXoQe~8WKzqJU~5?G50axtvM zN3->7$^PG3(o|ep15_K!Vr`GL9M*bR%VVvMwF1`4LbW26h`*k_Rj^haN?gsbt%0?s zvDd;{7i(>-b#$LHA`@L7Yg4TM3Hb(C8)I#VCE{;jSep!$*bHkMtj)2uloWIRV{L^s zvj6XsV~O~y;cRDW?SOSC){a3U>${Z^e~Sk z9y{=09glSa)=5|=4l$psY|V2j){|JLVfk36V_k!F2G)gGXJVZrY-eGK{%icXSm$G% zH^g?q5ZgsqmtkFurB8l@;nD_-bvf3RSXT_?UWIkF?pDvwwOF@eU59lO*7aC=|BrR! zP?ehv;Vn%r)@@i0RtrmS{;})m{t06+lnB zS_`D5*RbBe68#^EzGr`0a`0I6Yd+#@yKRVb6m-Z{yKdRdN0XkG&xFBG^j&u@@d9Srl6-KlWmSTmJdk^dlvA4zE2zztvjj=bw-UNHorsn}q-@x7idn;_U5HwNj zt+BTmMq+P=y(9MaeJAz~L&%-5cg5ZrTde|$R*!BsY@`3$v!~?lg}pDfh`*xJM?l#7 zNp$}q<^!?M#y$vpEcU_JV+3%BTo1)QY=9Kc;n*Vnic_r!;yeobRP3X%PryC~`#5oq zyaiw%uSnDkoQQog_DSlt8HM6G#Y9iTKC^FQpN@UT03e>TOs#XUuf;wW`%>)lurIeMC^;jd5OB!)i1-o3j1>LUxBT6{(~&+tFf?g4w#eN)HmH<8WClracpTd3?`)TZFbQRMo_HzSf>=*h`>=&_L8p?eI z`z!2MvERdf4f}2E*RkKkmLLC*@Vup&6~jB&?+)F*kNpYu2iPBBs~3SLgf057JNy*; zbL`KCqF-Q(_>YwM8vAGLZ?OAP|1I`+L!Ey=WdGPF!TxE;^9%N`*uRVax2C$-e>52E zzi|2z`Zvy`*#F>6i2Z*!<6x`(zaan9NM~G}@s-EXs{qaf3e!AsNA%xO`j0cokbg3q z8F41ZnHpyboGAsM)&i4g&VQU~aHhkVb|}=>f3x{-=E|8#(q;dz3eD1hac09=6lZpv zc?B>B&YU=Ni*4Ql6yAIb;LL}!phV}#8TAT)vk=b0IEysQ%@t=coaJ#A$5|3bi9e2h zlwvQ1vn^pk@FPI(7gWCybSMlsD*IkT%H@V#%XOF(2+fcRk!WoORH_jNG zeQ*xM*%wEh`QxY~Ajvvlkb-j%&Y?I5<0$1<0F4p-*S6aH3&Rm|HTv%yg>wSV(ZYEQ zj_AKLwEuUE{yQh)oQxy-FPxHc3eKszsCp=;%DZ&QT26AP!tv2ijS2PedFaoRW@j<2g|WH6K!;UqX6oOm=QZD{*f z9JK`Cba6!Xonp{4PSwD0dN>c@+>Ud%fbYP$6K9nEHQUH% zVCXHtc@^h1!~A-K#Ca3vBb>Kz-p6?xN69|UJErsZ8hrm2M>hW|DocR!e2nu2&L=pZ z;e0xnE&+dT_`k&Y2IniBuQfoPj#T;9V7|wl2hMoL_K$ZU6@MYr}x^ zJC0F)=TDr!G)#Yf{=pp=r{CUxIRB0?^gDOQ(NykuxD()xuLzqgcS7A>e_ZawxYOcJ zf;%Pdq_~sgs{Ow~PJzqdw(rE9s(*_+HSRQ;r1=E8)8WpDJH13_P$?rMGvUsRJIkP` zU}nQz1$TDb#c}7rT?lth+<9^5!kq_Kegf1yS>5w|xC`LUuSgodYGc91#$C9nh`R{x zqPQbFf2p+u?$WrbCEO(qaw(I$4DL#}%i=CCfaMfGjdTUv6&rhS#a-ECt%|!T?rOMe z;VS*dT|>c?VNQYEwQ>K4yAJMpxa$s)tluD|$_BU_N!Er90C!{DO`0mE)@Han;BJnq z)E-xz|KKY97h`MO?Qplj-L~=QtHP+YKrlPv?$Wn$cap35{f{flfx8>-?t?4=?1|t1 zGu#XB2Hd@I`&9ej7P$N3UWmIN?s2&L;~s%~0Pdl<2jU(qi3c@3i+xCA;~s{qWFL2o zj_PN6B<|6;VIc}{TaIk_c~m)SeQ<(AIiEB_hwwR|2NTFhV0vL1Kbv_hil=Qoxkhgx($8^?BlkF zZbRG*H^NPDJGe&wn~7EJr41NY>3{zpZrAis;=YMn;Xa02_ifzIao@rH5cgf&_XQ(I zKze3m2~eNLk8nT5{TTO?0cTSP_cPPU7r5Wzeu=A&eQ@=E0ml7CA@xYV>w|H>AM*T& z`#bJWxWC{I>Azz575BF$v46$=L#}_~{w>B|rtUuqqxt{E>#NOwc(db;gEs@-xOkJ} zjfXd(%JSr0z|*e)coX4GiZ?OdBn^YU_M7y~??1gM@TSHCZz{Yg|Nr58)8I`f%+u@aIq~Mln@gf|u0XZHWzdp3;9|+X`=6ysh!J8OGpkhqt}<=;}M-iT-;#;qBbC zBn-Ra?KX6)Pl53E#5)kLumAhu?TxpufcF{Z6wm&62dH#iG3*#>fP!6+w7T#XB4C zG`utMPRBcAfRS=%=|o-q9K4Yw0PlRfOYklbr0oB_i|{TU&2TB+)p(cTU5R%&-W9`9 zNxZ5lfp-nwb>g|U!QhGh>!)@je*YtM6W&*NH{(5wcMD#IcPn0icN?CE*TQq~EIhm6 zG(4`p)uZt7ME~^+gm^Jtq%i8k)-hR$+@_7c@5IaT?!oKg_3#S33a?aA-C^Arg1jB? zPCU_nUF9yky9Z#w+>7^sl(-L1|M*k<4>mBohZ;h>NAO<5dlc_!yvHQval9w-o){3~ z4e7u44BpFl&*Hs+_Z;5y8m9Yv5$~lzqABqT-m8r*J-m+h5#Aek@8Z3Q_cq>JBPnW@ z%>Lhd4^L@6-us41Z~n#kG2Z8RpWuBaw?nT0D&-4temPY4Yy7G4zQOAY^0#<@;(dqr zlfb^m`vLFAzCDEh8Sgi|U-0zK-}LZ1p5Fg!uqyW#-rsoYuK-V$fc}Ii`(K^qkApw4 zs^yQ1KOX)B_(S`De?t6;boFK?{Ymh_pA>&`{K-ZdQw&oW&MAd(szDTg8vI4@r^TNW ze>(h`@u$ZZ+4pBKSu-_8|B62g{_Oa(;?Fj43g;X{oO9tXh(9;}eE9R=t5raOb)WO& zFEH$p^o8&j9%5J&e>wcc@R!109KSz=B~-Ne^!iHuK3&I?E#q{U3;bDE>kChu|MP$TG;o@Q=VB zgMYXV>8vA%*p9+K3IAw(rTO^BnB3#=Pw3nD#}9$^Du917{#p2^;Gd3vD*kC2qdzTY z;Ga3V;@SA;;-8~n(nJ4>f1asz0e*&mA%0(?FT%eH|6=^h@GlYAr9&x~i{}b_v-y{b z;=CIF8vN_sD z-@h0C5&Zk`AH=^OU#$gAA<2CR|6%RX&*f44C-5J`e|!KF@+Swk_)pV*7ylXBo8mu9 zdkXyL@V~)-9{(Nu7x3T0e-Zz6{Fm@w#eW(96`ij8e{G}rfAPP={|o2UH6`(x{?a63Q+TayWd-5S0+KbbklJ;D*r=mTB?L}!X)_4ql3EHdC?&FuEy(H~rXfGv+OKX^-T2|SbXL;I6 z@M*6g*A)$q5`WsO&|bAc8vp9F*QLD%?X_vk{$Ihg{!7X_2Du*X4QQ{g(iP@^#=jx$ zjcISBZkx|cdlOwk!8W7aqP;oo<7sa}`vBTo(%zZ&R(@`5Ri=yU^a7_O7(|puHPyz4JF&d(z%ZH=z63hxUF#wXea5{_E(0v=66!5bZ;0 zA1ts#RJxwe!^AUY$a4hkV`v{qTOIq*9@}t=J@P9c+Q*9LxF$;b1lpI-K9Tmhv`?aa z2JMq+pGy0brjS%QjrQpSHu0QE`)t}H`+wT!40UpzV9uv~5$y|TUpP9~d z)4q)M)wD0Ct(2ek$XfvIt4yEQNa$MH>MdYENc#rbx6r^usENm{VMGjXunMRMcOavknTs0fb>|D{?mS4 z0klVnKW(-Dr!C^I472}lzemvjJ9?jB2HGFc{)_g9w7;VL5$(@tf86lU{zTIC{-5^e za;x_LV(3=@+F#TDh4weJf292_?eA%Sr!czDq2GVDf1+)~Uq^qX{X6a78cvzFKZIPC z06mt!2_~og4?$nj`%mgW+H(HiM1ye%#v{=BuZsrq3eX>NFd@Mt1WNn~CLVMpw`vI> z(60alQ^+j@(-KTcFtyz3R{(-(`nT#||DzI2*VqJl2_Tq}U^Rl72$mq2nP7f`SqSDN zn3Z65;hD|k4(7Lo%tZ+nGxp*`fd06a zCs>kT83LvMlC^Y$6nj~M<%aMg{=td_BKv__5v2Mm1f$P?g4GE&B3Ogqe*|k1tSxM7 znI6_5SWi6b4%J$J$licp!=btx6KqZ(`mdhFrjn~qfe6(8pI}RZt;N{NR2k8Kg6#-m zg6#=TB-nxAK!P0!b`|_i1UvT)v3F61dUm@J>`Sma!CnM=5U95R-JXi>O|Z}4RuW|) z2=*s9U^Ma|g2M%HFu@@NhY=h)0#I#_X>JLQAUKxbNP?pTKi2qv51q7!MoJDXdfl_{g(;6hf83boGc;h*n;5>qJ2+r01W~3_Xe8YSp z!Q})O5y-Yb(5FBIml9kyn(YdLtNI>-D^2dz1lNr2^E!gt2(Bl%S$eyH;6{R*hB3l$ zi(GFteYOaE0*k;Qu$8k>hQKB8np(!wCWr_Eg0S(JPW0hV-${@VyiSl3JWP-g+)j`a zlv1%vP^c9BNvH_w0S`gX`0pUNkKj&%dkF3#xV!NWt_1fQ zX@W-y9w&HAId$D92$cA%(yHO7njQ$AA$XDCS%T*Yo*TlyFl4_(@G8N}1ZMxQ=St~+ z!%6T4!S@7j5`0SV7Qy=jZxg&r@Xi3!HwfM{_zwuw&Y$2z)5*sKO8M2T=KqY~Yl6=S zz9i84Z$e)g;~RqSg!x;YtH=8T!CwSF68ui^6Tz;eII&rCQQ;T(i& zAsBQ^IA?Q9I5**HAl!s-GeRZ)rsC#9_LhXA|KV0c z&TS0Oc7!|iZNlvdcOcwRSJX3O^grCiFz-fq7UAxMM-uKqxIdv<0toja+((SP4fDQ) z`wjZ<8-xcC9!hv1;lYFlDVQ`&IJEx{44c{eYUMZMI)m^`jn`v8oA7$Va|kaXR7(Kid4v}d zo=#VB@uO(Fbe+^J2u4`@yZy;0 z;Z1!f;mxCww~AB00uWk+0ijLk5jupf2J2cr;pqSW8-|1(LVf;YT8f)2!j$j_!i?|* z!kq9y!Y*Mg6$?UH4njHn(NC~P*jJ3(3GXDlLy>6zT|?u&hwwgOxYv}spYVYOX*>@R zK1KL2;p2pl2>4M#5q}v-A4d3u_{|caX69+a=Lw%7G~fIx=W`9GVSbVDBf^&m-z0pQ z@O8ph2wx+7RW~rw^BV&X;ai07O1ZZQMgR4DzDM|h`1L7}*dI2DgdY=rL-+~d=Y*dU z>TiBc^b5kT1aJ2L;nympXH3Lj_5U5=_l;A)KN8JE_!H5%gg+DZ=iwK^KL~#%{GCwr zUlMwuQB&ezT$IQmR3Z|<3M`V_OJ|G&82%_CK*Cf5AX zq(qY|hRE#yqbZt@IHx3eiJ{V`Ktyv7<<3jAAkln83lNzlU@*6l(to0b6<+3wXi=i2i54U3`xkHg zMEYA`q9p~d_y01GWr&s+=dwi04f-KkfoNr-6^T~TPR+jx(W*@?)As5_-x94sbPds( zLJ*^p=>qK$`{rK?SeHY3_X?9B(A5N+8Y ziMA%%jc6O99f`Ij+Fp?6{3qH$rRe9f6VWb2qW{{nt0K|k+MQ@0qCJTAB2xNqvi8G(0C0olkTM(V0Z25}i(TnhFWC;Lk9lIE(09qO*z4 z8AMe`@t@ath%O+yjOaolrTjz}8UH0jmo_}cb2-tKL~{6}M|~C1)lJl3t|fYi=sKc= z=z1cD=mw$|(Tzm65Zy#HB>t+6TZwMdRWzris8lDm;dF@t>DeRliQ0|7$s!7gIz%J- zPbA{6=Q$<1izp+ih;kye?I%)4Ktfn55?!|@x}B(}LOOZ}(VdNLJa-d`@<;a&>CJzG zC%T{L0V4Gl&=3m$!$fZqJwo(6(W6995j{rq1kuP>07OIjA3aUAS8N$ zNFDVMy-4&D(aVF7AYUbVU5wWTej>dD5WPk8Dbd?R?-RX4^d6B~4*K}PmFNSakBCJ4 z^$dJW^oa&ENLBqaqR)xGBKm^p%i$=|*F@ip=KPLMUsArOGXv2NbS5PFk?2pNpNM|x z=Mw$gFcAGp^t*U|8*mc+(XbKyMQ0qMzlr`O`iDqAwLvYS|1`2QE}iiePiH(GRrUnB zN@pTElhG0JSN=%^IjPB=oX%9@nSu^KEJM`tEF zbJLlb&TPUq3!Pa9RCH#iGpG3H80v5?!!VD8<{iS%PiF}_3(!%5PiH~7E@XOMgwA4g z7FGD>f%gBbIPqmN&f&XRQ0&YzC{{ioQ=7>4DVTsq4e&x&-mqO%g6bp*LGomJ?p zM#n4xifVN_Yf5wtleHF|wG~x=T4ZMEtV?GTI_uHdkk0ya%*lUe0}WF=8wrV70+eS{ zI->lY%_OvW1EwS5-+VGVThrN(&Ng&*r?V}co#|{xX9vNnwV>YsogL|@H-e#lb`ij? zbavBzjogFIUUWqNwMT9K>Fh&i-_Z>Fi~j(*9;ibKc`)%MbPl2O51m8lRCErbb0eKG zbk3o3IGq#d96{$;I!DquO47$R>2!{!b4)X1`l<+({?j?$U{0iS8l98qoI>a1L0#cF zwaKD$I-RrVoI%Iz|MghT9^mPmOXmtY=h3;C&iQmM6ov~7gBE{r_J?zs7?+ypfbaHVfbW%E*hBbIqt4pV#BjP{OZB6HGIz2j%)483_ z19a}7b2ptk>B#1P1bGjg`{>-OXmwZj57`gWd4$eGjfc*|4W@sk^C%s81<+Yf(0QKD zlXRY;^OOLdZnD(S)L@^b^W0GS3v^zi^CBIk{B&MwLUdlCGqm|viLcXnla7eLuJzUs z&pUL!rt>bHkLbK7RPWRIpqWoPL;BzOn9gT(J`v2Pib1n|PDd#}oi9w*S3}Wn==?1uRiBBXx zi1!9tKB}aS_O#Jy3lWl zxFD{?qgMgqx(SK%cH(D=?;w7J_)g;ciSHu5M?!a-5#39CUt>3k#19ZZMEsz-9T}b0 zf8s}ppCDHHPyF~0;7MZjoiDLk0>pS`DEb`n>%`9!E43$nL9Q>F9$qHa=l{g762GSV z8To5{gZNG2w+#O6A?9~U`Xc!r@pr`U6Mseg0r98A9}<5oRX!R5>;DBn{2B2V68(Ho zi&(7%{afO%CG?G4zipgie^2};@ejnm68}j2Gx1M@r~rOxZi#;*R&N1{ToD@mkN+b6 zkN9umzVn~ax&Jnukc^}J{aH%JHJ<+Y|MVmikW4222}vd*nMCY~6}Vp_QOkj`CnuSP zWD1fg1*4Y$lBr0hZZHkAM5iU0PTwk?8A#?LnUQ2xl9>cBGl@R=Z*oayBbh@&vo{{G z=QQ2UO|k&VJS6jpf8HU?{EbbrAju*m3y~~5h{`AyCDGsi8nz`!#**}BV=Iy+N!BD; zieyESrAd|}Sw^L+xmwoX&E`K@!FX08S)F8M5~cYhs~G=kBc+vp4dY*nWCKC2O|lNj zdSb8JfJxRT`QJ#Qnz0Q@HYeGLWK)ujNj7PC4BKW3EYGNaB~icsC)v_OwL$W`~z9dTg zN7_@J9ME`34k8&taxlrEB!>(zBx)frn8W)9$q^(+HXh?YisTlOqe;#sIfmpkl4D7f z;FHMyKRMov_e7GDNlqH1lbk|glwW!yIi2Jzk~1V-^naiOiCO|k&S}y~&Lg>sQ(mWTFTrwDlBwj|Mj(tcjHyAnp*Z8YRZXmgam^NwMk-rN~8_9_Nll(%WG@s;Gx&GF`NR0R= ze;S^@N&6c959xR${h|Fw^6v;|Iu5B;evMDZSJ6ImI)U*_M5+XzROvtIB*s4(=@g_R z`~SY56ce3_bQRL6N#`e>hICfaX-Q`yosM({;hEkbXYAh^du9o#{eR;mosD!(ajLHX zNcAfK>0G4qlFm&!Pm^mH<{QdgfOK)v1xXhnU8wPsE^LsC3hiRb-)L951nIJ*{V^^j zp(UFT>C&Y7gA!=~z-(0!G?6$}k^8dIssSq$iOc zM|wivPkMaAEcS_}%E_dslAfY&_2^C`JzdutVOC23=~<*o{7sc}NpB%NkMt_i^GPou zy@2#0LCO-Kie5Z~zm)WH(#wWCSCEc~za(BwdOhhiq}Mhu((8usH;~>$dgG8sEd&O6 zD`}hbHd2?gMXEHP)EbP1RILc&RQgZqt6S{}NIRrT|4E}Ee@vQ@CZy@0kYIAs?toc1 zOVTGvE7FHZYtp+(d!%=e-rkgutUDWqz6+8{|EGbB$miGq2G^c~WtN#$%OeTMW|(icddBYl1Vlb&BBeMwi*pYvBp-z0sN z^mWqLM!>4{8-spG-y&5DK?5Ltm-I8z_eeh^eZTJ{{a`5i5$PwSA2(o$YVnsIJ}3Q# z^b69jNWUCp3GC}8h4fp}?~MKZpkdM<$qps`iL9?Az$XO7uUnamdC~?PcRCm@>vEo1n3cXCgAu|4j5hGy0!RMmB}w z$@CIHrZ@lMoQiB#vZ=|Yms@oNL^dtibbUh)O?hS@n~_XpKbxruk;yAS^Q5xb$mS!P zoopVmImqTBQ_F!KOE$N%M{ege{`tw2;FB#NS9AW8$t!^1$rdHsglsXg)yWnoTaIiA zvZcsm8Z!}pja-^cHvhUMv;WVQCtFGQSCH$9ruxcctM+X&v;WUV_WxvSkZnM=CfRyq zYmu!(ruAP^*6mX@Ji@s?+0ZM18qtR0-$<@T|FccW_9EMiY)7)q$+jWef@~`?+59)s zp>nr29d1juJ(+y@s|U5ipf1@?WV;H#ECHGM{ZFlb^zHyf!COb}`x6WEYT~Lw24- z&mC}*oj+t>NTwD7lY0r7+U=8FN;ahb*%f40lU+%6)u6GVtZT_4vg^n!vg^riA-jR> zCgIUb0NKq7FNMf%CA)1Xy=AJ~WFDDA=ISaM?~?_>);0`E|4mkhtRjoaGQlK$KUr#` zIawk8kyU`q?EkZx>@Kn%*&Twpy`d%3`Y+DA$?he)M}>4hL;9aRK=vKkgJf@zJw)~# z*~4T{kUc{77@6q5d0u3X8-^#zo+f)rHL0KDGi1*;w!u74_EO&_dx7jl<q{>Jk?+23S8ko`vXBUxYee;Qr-7qVXm9{Yw;JS z(tq+PRY*strn^1)G~^GEPfNZZ`E=wfkxx&)DESQJ^ODac z-$`y@%9a;_d}*C14CKp_FGs#2`SRpS`3JR3#g)moBwvMmJ@Qq_*Cbc^Prf?2KKU`o zwaC{Y7yZ}Wiv9~H`TFD=lmCx=LrLGDsYSk#E~+>;A>W*QQ}WFkPJ>a0KgQmQd}s2l z$@|Y@8}jYQw^gC0b6rd6KlzU2I}H-WvkUp2Z{MgaC#}9JJPb5FNe@lK+<0LnyLh>`n&m}*T{A|IWWjZ-$z$X6l z$j>L&-~1ZPMdX)CRJ{U_U(%$IUq*g~crG`{D^*C(_SNJ8`8DLXkzY%GGx>GoH;`Z7 z03`87aC|kcsxl?te||tN(HF^I zCRfXW>E{*l*T~gDkny~(Y|Zv2`Fnkv{4Ke@P5ut~yA9Id-zWcs`~&ij$v-6jNJkA} z|CapIhLij=ll2ANaml|V|DF6R@*l~+CjXB78}e_P>dlq>d-5MNr+)fBk^f5mGx;y0 z{l5)v$^Rh#m;6uif5`tL|66kkL*FJJXu^N$wmXgnD0@7*lhPfZ?j&?4pgWNOjQ)2g z9#m;k=uSp=D!P-?g|2!L7y#%_X)t~LpO)@4>b9BN?sRn38-W5h>95b=2W*TG?!tRhwcJ&=N0FCbm!N2&A%Ysg(W0QfOalo zau=h!4Bf@)E=gDEzaY)0qAU8}9j*V}W$7+QSDpFO)n5Tfmf8PzSEjoT-BswWL3dRN zt!B!tZj3d>zgGV$#@fceF5QjAvmV{`=_<{qYtDbV8`3rBKYAdW(A|pergXQUyBXch z6`_O-;g*eu?$&g-?K|miV?x^vz;t(@`#Iem>AG}xqI)9Uo#`G#cNe;QNe{cy-Hq-Z zVym^l(C%rBz3J{R{QJ<|m#*3W>pl-KMGrK_!E}$JdkEbl=pIUU4Bf*NmGn>d@F832 zKi#ndkK7(j_ZYgz(KSne!W>U`^!~ql65Y$`o=o=wx~I@Ri|(m(Pp5m@fQ{}Mbk7`& zNXXBodoJA({ik~#-SbsSe>i$X7t+0iuI&F+Y5o7dB>hskUS^P2(7lQ7m2|Hb|5XhS z-D~JxPxo57*EJsFzk#ma`5Vv8bZ_gk(Y-~kdI_N0qN`+|u4Rx;V~EqE`v6^^Zb7$A zw?j7&e`vswF=D#1|L>|*fNt9O#m?z=hi*%{_t35A-a)sf+iOB}Zy#VJ>rT3N(beDl znt4$APxn5BRL1?vP=o60|4VcqqWd)6hv_~+_Yt~}(S5W*3g+AphuExNDLeVy)W13cX~=)S4Jy0^FKzAK6EG%&hq zX=pHXKcM@ORQb?EKc@Ss;6E`KE&k&Cf?_$kUs6m>_ba;p(fyk4&vd_``-AX&OZPjv z-w#Si){p8|jZVJ;(EWw(pLBnv`#aqc{THzL{b%9^IVMzKju%vQIdlX9lDVCAzvP1smDR!V(fno!S6)Dyb zz)BP=Q>;d@3WYia8p5xx>_$C`H7VBV+Z1cb)#!h*F2(v3>kT1C&VML2q}YaHBZ|!_ zHm2B=Vv_-~Z%}O3+)`{ov6Xm?{uf)TkRFlR|5J$mD`R`p)s7VVQS3yqn*esEFo!?I zt_HI^g{%mL+W%7+{V(>W*q36TK^24FpW-Nr11QE&97u5p#X%GYH&N5ip%jOW_8d-e zr1Wq^gOOTe4d>Am$4T@Ux#}f=;&_S^DMpq63fcVYQJ=!?b5fj2^%ccwl+RL}PTBvE zoI&vd#hDZxinA!Lqd1%55{h#uE~Ge@;(UtpRO#kvs!?B{yHc}v5rq+d6}pt-YKqG! zu8`i${=c}AV)Xfs%DqM~*P3x%Ptl^df#PNgSppPBzXed-BH&voZqwEEXUU=nC~OLk z!l5wdKRW7D=$(I)MWOVcLW{rHF~vO;2}O@0rRa(?lWX3;_S>T!MDd95JZwCo|9TXUQ>YC;#S;`- z|K;{+ivDvnU;e5-pQF&<{F(+{r1+QOC5q1}UZ!}D;uVUwC|;#d+kT4I4Dt<%H=F9s zmEvuRcLnoKgE7eWDL$e2fI{@YF#2D7tP*9$Bul*lP?-IH@dd?C6n*{wTKr!%NQ!SL zzNh$>;=9IU{6A3qsO##d@H54q6u(gXPVpb3>1TB_aEg9 zl;coNPB|{+B$VS(PDnXEYSLGCx(^5h?HRY6)Q;lYr zM&By7>6EPu{T4tuBjxOrGf~b$X_f%RulD~^XtpMuat_LQ#4{)5T$FQbTHV9Elp_8r z*SrEKdqK*RDHo#LhH_!bwI~;%T$XZC$|Wfmqg2~|%Ee6;Ez#z7DaxfOmG~=9^Jy%X zqg<78dCHY2SD;*RbaZ9PRkTO0Z4y9fKDA!Z~9bKDpL&|k1*YA5M*QFfN|5E8c zrFs!C_>Cx)&Qoqoxe4W_O;@J3%_+B}++qm76{U#3G~b6&ZcBLx<#v>NQf^PV3*`=! z>g0!VM^k0z#*jk0QtmFsZl=l}DysY6i*kR;y(#yj+=p`C1~Yu6Jb?0G$^$76YO;o} zl!sCtM|l|KSjsV!O7kfXH?`D4(BLVLqCAH3=s`NA7Jo@OUalulo;avZd6MBdh0>!u zmGVl;zW$$2+1LMbD9@lgOA_^40Oi>Oe(|gGf6DV3C*=i{mr-6wDQ7;VyaK4HyM*%6 zkwoRWToSKP4d_qKRg||jp z9ZHMR9vyXuIDN`HDch6i$rhJL=H9@{i`HC2?Dh5MB`8wqr zly6DMyanir?@)e9`7Y%L5`B;I{h`DUDV6L~s5TBjrz{J-<-)1^idaKPhDiP}P6$V<^r3zx<2xAIiT~qI4qB z|C8&#O%GJ#P)$lTE|t=Js`04C9|2brQcX-XkpegKP)(wu!bUY2)znmzQ%y-V1r<6` zBV`E?yYHu(#$-)LwJO#0REto}Ks685j8wBz%|tZ|mFU0bpOs20zo|Y4)m&6_Dk{MU z^W27cUaAGD=A)WlN7aZH7(y;2_=OGIqEt&$Ek>o-sMK2k)e=oq>?P&8l)*1UwY+$i z?R%(}GyWB*R-%$6KzF_})oA^%R-@XQYIUlOsMerbpK492b*R>&TD#Awiz?c6sn#3Z zN;%R0Y6GebNBcLX+Kg(GCY?&J0#ut*ZArC-0*}o9R)Z>3+fZ#wwS$mvC)e!_$&OSz zQ|+W~^;mWp6s6jY%Awkw>O`tNs1Bprlj;Dfy{Pu3+Plf3+NVjO+K+1ghG(dg1E~(8 zI;8KX(r*D&hc>x=7}Xf6u~df}HdzZQSprn_D5_&6S1kcl$Cz5jQ7Q3Pw+g0T0jN%* zx}54{stc%2p*oAIzyCjj>NKj;o7^Ug>P%(mQJ+n99@RNiO8GTR(Vjnqxsd8os*9*D zk&0?9P)M0`s>=q6R98^lNOdLEwS6bmRa93~T{Daq|8-Q?QyKl&JU3B^)K@oC-9mNi za28dI%BHdg9X3%am+E0EkE*8fsS@FDQw3BVs*q|#`K9?-CF-%KR9&h}Qe^Y5{RLG; zC13uI8flN}9;(}^?xZqHfUr^BMJ1bm&2TT3(tN7>sO}%C_+VpGJ){gZ&yP^OM)fFF zU&bG!dXnmKNqk}`>nW;dsh+0N%5P@=xdBE}UZ8rB>Sd~zlwZ&4D^w!>aw`>Ir}}{E z4XXF3-lTe)N-YEi{|=RU3sARBiW-Gp0;oQu`jkqEKh?)nBK`(R^%>O{68e0IP_F`1 zUsL}~^$qorRNqoBLiHUrRNqtmNA&~MFH}EDx-0>z#LuRyU#b3~`i<&Os^6*p(EQRN z)n8O1{-zTl5&f@>{@3GBPfR_o3f1FLPe47S|Mi5_6KT%DRMeADPf9(xq{u5kQ?8yu zcU4bGJ)=aYqMlleX{e{Co|bw#%_b=ln!#kvL_H7n%+%_%pL!PRS*d5!c&Sc32lZUk zBl=G*;;*CgQZGQQ&wr@(DnPxU5H3W$ux8T@FG{@`^Ol z>FZH%Ouat!2Gsu>qS}ypqrt6orSzYAQ{~k2usQV()LT$*BcUy+mH1PSyaG^f+u*51 z|7&ypQ}0N@M7V&Q$tD2d88-D3An`atS~np}NVjp<(jQ6EOF_WaaihN4RU#W|Kbr#_1MD(a)D&!Rqt`UGlO4(j8~ zi1aEzeIoVg)F)A&N_{f*DTB5fa_ZBDs+>VB`mdkJ+0>U%pF@2i^|{pN_j9S`2uK+h zG_|Cwi>NOi@QCM90bfRa1+^Uhj7-awO%K#pQ(M&6P~SkU76nPUj{5orAh$PC-%5Rx z*f&$(qC>hvwJ1orR#TnYrVa$`P`lJVwWlxw6J*<@gaV7G6Y36i+%TAEN}Y}Nbg7@A zE~p=&E~)RPuBdOPu7#)9B#M0p^__!U>bnf*J=70U-%EWz^?k}Y($xb)c%}c;51Xt< z<@Pb^C&hT2`iUkax3d3N_@^5u^|RD(Q$I)jI`#9^FHyfB$QKnrDpJ2p{VKKE|2K81 zUmHaG2K5`%>IjHh^j~MaL;X4RyVM_2zbDc6sXrKW-Z!W}qE^aJ{c-;)o=>SiYi#5B zg8Dn^FRA;2{}uJuqod!dTb=to^^ep)3_N{<+MNH_ztHRd3H(ZLP3qt1%|`t@y@{#+ zp#E2oe^UQNE$2VAUInO?_^W@a+yCf|r;xpI=qdeg#zJp=dJ~FYp90YvSpw)yLT`F{ zlhT`t-emNqpr;msCY>Jirfhf&+tl=?r8mtGzbpYw54{=a&1jG_(VKEfG@ssJL`%_Imfq6zmKlKiEzwg8f$41pdaKb}k=`owR-(6Z<2TV&2S{OFo!%PC zqi0|(db`tGo8I>H)}gm4y>;m+!Kb<-P@|8_?UB-iGuxYI2QV>A$fzqqh~k%_VUQ zdRq=ceE_|!=_%Q#w~fIo@i(@-4)k^uz)tjb5o6~DKyO!iyERDT*@ND`^!8M@igPcy zs#SpAKFX;o?nm!n@$66U0D1=+|3S*om_z6tN$*g4htoTZ-WXk_(M-jr^V^BzHDB z_YuHWdk(pChi4~uz9zkZ+(qOr9P}Y~@lbpzxogQ?M(#>-mrH+zWp#BLUPbO|a+&j| z{mETN?j~~A>n`0u?#4`?dVB6>a<{7X7N@^$urP9Wkb9Eco#Y-ScNe+)$=yxvUUGT_ zG}vo$_qo~!$Z225JveBh=8uqjg50Cz9w#^U{IArgbUoxoTS>O6r^w~WJx$Id_l#uE zlFMa1vscq67m^Foa%rNWxInH>u1Kyzu0(FE^CwNnRmo+}pO%nokZX}^4mzk|+pVWV z?l*E>avzZEk$aU~pWKV&o|Ei(axaX#wwK7g>^i?>O!~Hy6Q4cyr?~gEtS}lX&yu9fUU@ z-gIK-R>8AR0qIpMwYqQ(ytQ<_Yo>kh))v1G-nv<5RpG6Vw*%e=cw6CZ zh-aRUw-MgPN#JTX#oHWD{-0HCfw$$jeYVEi4o~NQZ(FO)l(rGLK0D&=iMJEpE(wXZ zv*UNgvy(qw_6P`XkD(5G;q8ZK{*Sj0-oDwq>AT(AAMZe=4zLov`WhaLcQM`}c&FeU zig%32!|)ErI}+~*6K5+t3U93QYZ=Gloq%Wlk9T}3Q+y)cNCo-`kS*ZkRDgFX-Z^-u z;hmnY5bq4Uv!u_?|9EGoVv*zcbA>KvV&~D2mcz57kigzvEWq4QN zU5!& z8t*y0XYeX`&*J6ra(HI=cpjc_;%tR>_{SUaf3F~>h^L1?*(;Up0(e!tE?y0(i6I?=;WjeT?@4-kW$Y;=O|RlB;sNfcGli>#EX6fUM6O zuESe+@8i9V_b%Q$*=@1cU0Xo5k`M64;C+~O)@!80f0q3O&#WHrQ#|><#h<7B#ea$S zRa%SpwY$=9@u$K24x8(H$$r5574Jv9U+{jy`+3m8O0s4DhW964;{Si7Osc{A3(r0U z3@QJ`H&@5|4}U!T3Gn}iZ=VImYW(c*pD_3n<4=J<3I1gGlV;5|FTS<_(@cp!H9q)L zjTIyf)BE6$z+V7=TKqZir^BBae|miP8f2M5qOg{_0**^ZPuEXpD0sfr$^C~+R ze&YZ0WGUST@$(7iPgjD!ApYX`3yEA9e^CW)7qG=I=9Eh)Wy{823V-P&uvB`7{bljH z_{-s+jlVqpF8C|puZO=PzUzf|P;_!r<`q}V?oZXXa@UO$a)=IM1>w5ef#_e+x{@wUD?znupyQ9>ve&KZc*fe;ofQ{89L$@y+~) z^iQUG)jo~?4F0nNCJFF8eBbp9@FS7g_x~MVz^|x75x*pX`v_nis`yR(8h%5XdRmpP z0l$Ucc5#f~Nn_W!N07KdAOC0k=kVXhe;)r${1@ z3-}w~&iwd;_uhY&O0&WL2qqyIpFn5+V1lfFFcHDTsm3vr5=?FlgUK8-MJ7m^2N29a zFcrZFf~gapV46Wz!)XboBbYv|bsc6Tn1x^_f|kjH3(KASWQ{m3rt{_v$|8RNw5yVS_EsSOsXMRHxpai^$9j3 z*nnVTf(;2W=Xc6Y2sRyv)qHb;EnNRC3AP$HyA8oU1ltnqOt2lnjs&&^5DY#433eKk z5bQ#*n*_V2B*E?kdlBqGkU78O_s%ZCE^uFhBM9~*IEY|>f&&IuN1!dhGzSyd-+T!U zajQLyAaj1l97%92!BGU}{1V&81eZOI;DlsIaD2*0aH7kOBz&3RWWvP=P9b=m;8cQ# z2u>roir{pDiwVvkIFH~=0z38-*k=JXIfuYK|H+v12`-f80;kdWKlRn%5`xPKv`qw; zr2<3ic?H3h1BT#gg4+nLA-Iv?T7v5dt{Yms4*yxtn+WWg55djuiiZ3@xSil$f;$NA zCb*N}u51eTn@*sQ09JkA(g2xC(5j<|fU{?ZFDwyi4#BLE`_<6Z8q5%d+Y~@B+b$>5OjP-kz* zMeqjU!~|~={6z2;!Dj?-6MR7M4#9f_?^>0+lLYShPw*kZ#{^>tboh7okl+&n_vL?8 z5qwVY9l;j_UlV*u@YT52@(sba!|PAxBKV%*2Ljs#1}TD{3H~BT{Qq}peii;U&=C9~ z=1+HBe-n;Jki0SebHSaMNTGdFNR)(=5Y9+ADdDt)lMzl$ zI62{zgi~0b^lpa`PBmz2g~|HEX$VJTZ8K&%LfZleXBdbHXCj=7aArbtd%{@=XC<6% zAaLF0PrJF3lPpjs55^!??6xJ&i~k+O+ zXy5rK%svGW%Kx*@>l1FM>;~iZ-9)4AuB!h;nYly(~+;h}_w5gwteJO77Anjo9^Xu`zIk0Csf@L0m*3GMk$ z+F4b$7ifhiX*e=VWmD_?AD-$~aysF|gl7<5OL!*XMTBP&o=d2WAUwxfW!=srJm19^ z5ZW#<=uCJq;gy7!5MHLKZ3|FvIpG!KDz75EI%Dj$zQ(QOI>I{$uP3~j@CL#gU5A?n z<%G8o-bQ%q(7d->oL$|Z?F9;ogzouI z##9J9gjGUwd%_xFeW*i|uua$+T6t`7R@)_ffv`vToSOF?|NM|fTY#w!?fp+@}o2+ z{Dkl`)qa|3Yz?2g?3aW;6MjYbt)}~0_>IecNBDzkzfWrke&AdmGBS3 z-w1zCYcsUDGXGcSWD6MfuK$Q;BpQ!sa-#ncO+qw2(L_WO5KTDThiKxllO{c*Nr@&i zCcTr<6hzY!O-VF05kymsTRRQWh{1Z2fM`15^h7g^ZEO5YMCR&5GZW21G@IgC-7K>c z&5`N#x+^;u(cDDyDxN3HW~-W?Xf2`zh?XW=kZ5sf79v`hXi>%X5kMaZfwDnu(OwX&6DomVAVgJ?CP%=sO^=8$G>qV0&*A=)S* ziPj}rk7z@p^@%n}nx`d0`i+UUAligzGoqo709Lzsswdi#Xd9xfh-?=aZbFpp0z}&r z?M}1<(auDf{}b)xI_yHU8_}-AwMk602hrX{dupkB4Vn|}L$p89zC`-Jw{~C zpA-^}8g!6;G?9Dwqs~N66FozeBXW;`vgx!1Scib*l_lZ8R!tB0{A^MBxBckt#J|_B-=o2FOf0X$@ z(dR^8qr&k$oI+>-lpi z{+s+nME{T#LsL@c}m5zQmm1mjpD52 zXD7cq`8mjMPJT}EYmlFd{DS1?CO;qfd8D7$Y8ziGo?p0tG1dPmPG(t^{KASC5iXic zM1C>h;=(0_OA40~E-hR}xa_pcUrK&C#mfs<5Uwa(Nx1T~t0l9nlElf6^s8yE)e|(* zu6<4N8<1a%{JP}V7PHP!*6s=U^@o@Z$!|h_Bk>y>UrDcbQ!$$vlU?H$$CHbu! zvo-nc$ZsR%wx-P1u)UZaj2ZK?;+@FvMtBJE~&O&|<@*j}j zll+6^_ac86`Mt^SM}8ma_cdjV3bsi}^S$GQhQxl&2X=zsR8A(dnGlgdf&nAD4GMsf_%c7Ub+J7Ub_H ze;@gKbf51{(7i+M7xREI{SOpBME*_k53AK9!bgRV2_F}Z51!5S@VfAg zbVl-Tk$;!`+q!S>*ged=B{8n#H}rjDlHUu9KP3MR`7z`_CI6A$V;_tE#5CER|BU>X z70fB)eUONj02| z!sPba6{c|floUu~@l#7S4TS|Mj8Hsnf(oXiFujXspfIDznMSmV6lNCABAhirrDhY( zE}VnHoXXDSvU5|I$Hntfn9s%YQ&=F46Qr;Zh0WAqVG4^VSX8)}aB<-h6joQTB!#8y zH>PF5W|$Jt^#!GE(j%a$n(o!u=CeZ~%n^6&xfq|EF+>@KE>8 zIgG;LES^UD@Nfw;raIKX8H>#TL-YvW*K?V0xxX;D+ zQ+Pn+gTjY|^8bSTzwoFS`G3LuU&B!p%>PHc@)(8D6wLpVSgEHev=lr;!Teuwj)JGa zS4kiYg^@5XEC`FjlCYeh3M&+5_*R1HycFJ{nEa-^OW}J>_a24!EoE!?fWn6g#;EEe z;m2t$g-zRe+vH+{w@4R_^inOcmWvBfTr4@wQe2p#&i}6)q=SUbupAMd3=qm4&MaR~4=%T%F=t3f7>wW)j$H zt@GN#b&PrEC&lYg+?L|{6gQ)|0mY3eZm5;m`QKgRCSvUT@0iUgZbfkm@mm_7p7V=a zi?Q>+S&-eU?I><9w0nWco4fBZFp{Vg~-_E0=r{1G-Z{zwb#9db0q(G-uN zcoM~9DVpA^Sj) z-i_o_N%0Yik5hb<;$wEVNB?S{IP6_9isBO^Iuj(HJKU@AB*g;7rzi##pQf0j_>AU# zHl0_oC-jGyF!|-87>Umt|G{F4ixjIAONz_Fie>eCnj*zIrK>46D9uT+N$~@UEsC#D zY*T!JVob3|v7_3q)#_6!#r}wwf1&ss#pjd2_~geJJN#38NqYOV>)sEqQcR3Jc>}yj z@pWb2ux#ceZ;7$O+c&v5cYk(TMMsOgcu8!-Qi|hK()qtMq2ni_Wat0v0AtEY z?Y&{aEHw=!J^x9X*iimolK+?F|0Vf={NZE&lkC;Zk5tJUI^aQ2H#g8&RdHdO#M+=`EVxFcHQhJ7xN6Gx3QqHp3 z?}+(7CG9d96HzKs%8M_UvS^M5)TY#wzGcd6 zwXqoaf64rxQcu_yJ|}#h(%Y0?Q2e4${$JA5&Qf}ZUlsqFQ2t+%|69X1DVhH#Z!l%w z5xy&w|Ch}FDSaUPP&h{Tk?>=op8sSWKC{DTN&a7w|7Wk)SCo@q@UJPaN9h|%|55r@ zZyxi11=<2i+5$?p1yK4)s4bxMi{jKOwFQ*41(dV}l(Yquv;~y31(dV}l>SYsY)>qY zM|mE~ny5U!wJOWo%jW--?fg&K{GYO&|0(P6U!F|y zaADyh!bOFP2^SYGAzV_plyK<;6)Zz}Sp~}pmlv);dBr41y@>Kk_N!W6ner;it}0wD z6;NKC@)|B)Q_8g{ukDz1D6gBw2~u9)-aq9H?9$TT;_^n6H>JF>c=Lao)HL${^5%-S z5N@egb}K8imw0Q++bGypxSeo&;SRzbg*yp%PEf%vly_CIn{ao>@1fzI!o4W(P5E%e z`v~_H?kC(|c!2Og$_LrTYU?>zc!=;&;b94C+g*?H5tNSampSq zJi+nFZMWzDlt-qF;!`MJK>1Y4XHqu*r+m8bj07`(E1yOAT*_yQxAT9t`H|2X2+?z59Qodiz1C$?D@F3-f zlE8klsz)e4s?=ixp7N+Pru+ou(aJt4d`kGV@EP^DzyDIs2|b}N3=)(qOi)Z-dh>tE z#RP2u7MFSP70MOGRbh?Ztd#3CpQqfQc_ZbfYFolKjY}xUiaRt`quizXIprReHz@b1 z>`D1KDsxay%KxPN0_8E3U!?q6vhPrSN%*obnfF!OjFKO_SFck}){`_bhVq-jw_Nre z4d1n4rhh+;DStru!<0;r@<)_^p!_lAZzz94`Af>5QvO`2&r%uXF9v$?UkSf<*>5%c zPWXLFD*lo3uatjM{Il>E%W6Fu{zmzC1%C{Ye^Hr^^50Y@r2LPv|58b=_dnAl3$ExR zfCb}gI6=zWJ*iAYWlAa&Q<;p)B+5=|+2pm$YA2^M#gHCprlK+pm8l0xDkG>&I~c0- z^i*b+cm^snTFMqM(?COI7BRC5XA{~MpkPia>r$DE%IZ|+rm`f-gOthwO3h1Uz9dj= zTY!QEsVt&kA)##n3KpfZxPrwJ)T)+91CdKnS((bxRF#_-zEvRg& z>}D>zxyx=zWgDfo5^nAIZ7r}hZ|COPLBk!X>`G-Pm)%+9E;h_AXE!msQ`sZcXbpQ& zd4$T|R8FR{50!(c?3-q(>_=sP7au_7K#Q|h2U9tk${`6uzaY`Le<%BGobv`NKl^W^hI)%!OR8FOG5tY-ZoJZw!DrZqSL$WhdeIllE zHkEU1Xz{rNUb6Fr7f`uyz*D)H%H`rO5nf8=vZ3r1RIa0PC6#NaTt(&T;dM%Xt%+@} z>ovS#sP-l*cZs~2$}LoGr*dnWrE*)^hsqri+-bb7UBkPn+(YF-D)&;kU(9_@|9~l- zn94)SKAbXC9;MQv@)(ss{Nq$cQF)fi6B>@D@-&qvsXR59D+#DPla@=96M8~_h!3e$ zsYFzYO67%xK_4n5F=Z;1p{kn2_V%b#X}GvKBxqBKsXR}m*HnI?@(q>mshIyusgD3w z@&gswe&t6?WtV2>f60EO@&}dQ6r2A${!c1@Q~7JaNMKt)BB1ggRj7_fbuyA+bz-XH zQ=QN>Rr?5_V4_rPXuP(7s(l1-%;e&y5Kd`iRyY+^`M*`!M*s8Q?2b$Y6E zQk{Y7Y*c5YIt$gAsM_IwsEL`stDW6q>t-JT6wD=@TR2aGjyM0OI=^rM<88R01$LPW zQ#F&PsvV)asN%(_+D70sONv}dxU_H?s?Ptj*_Wrf8Pyf2u10l5X;u=hER_FO<^P#} zb@6LZU5~2#zq%IHb*N_kueGh4Xza(68o>cdt zx>uT|y0_Dq|5M#B<6{)w9K)O7%3VXHq?#>KR#8_PU&v2!{Hc zL)HAB>Ujg6>IGCUr+OjPOO(1uXwQF4W8zDNI{(}73JtGx*{f0|)oZBULG@ayH%o9G zRr7zvH&DHi>P`Uqg;{Zt>O`he3s zNY%{WezMDdgzBSIAE)}*xcn$57)>>%`Xtqe>Qhv6RG&_iROSB`Jezi-YW}a3PgPq< zHB6bL71cb|3e|!H+77BR|7zJZW3RVLwMMlmSzXw0D`{!iHoZ!ycBm#sot*z)rrJ}s zPxS?=&nbRBl^NPPUliIF;2ORn=2fb%DR`ag8`(;-o0Ite`${F{cK%oVF4gzaI1y9* zfa=FoKXlnK(tPBm_{8y_QvGbG>I>?L4Sq@OT&iDDOFZFgYKbL&LoG4nZ>j!8^*gG+ zQT?9k&s2X<+aIagE->yQe^Kh!l&AW;1$MoE2<`cgWBwNN57mDa{AYZ6rM3T2o0!`8 znX)#432GBknJQa4l-!88E^d$r)D1q z6d!4Ut^8R@tkl zT}|zpY~HN@bxK`7RCpt`+o{W8R3obXCLLhaEs)+~=x3#g4!>IrI3D;Q1f$y7t_DGRboc!t`u)I4gr zH0yZZ1tGOIwTN1sTAo^kT7g zsr9Lu|J#pMJ(mU&yg=<=YA;gzM8lV;y-e*bYOhdxUCgUO+X7Vkh6UF7&2)v-lK4Gp z?}&Uil_`Fo+8AmdQ2Q_=v)l3!wU5)=ruMt|U#Q9aZOy+8>HnbiC$+z+{WTz^|0f+%`;R)*$D=-} z@%8^vAD{X}iYE|GIJgSx6N|Aw0Vpu@S7826eG1{w7Eqr`%+%Cn{-zm0-TdEmn4bF0 z)Muc+EA<(vuR(n#>Pu0dnfk)iXQ4hf^;xOQ_Up5yh1BOz+c~Mvm9@&&GY|Czl$w|N zeAKfiKSS$ZkorPdi7m$bpZcQ0#i;8OL4EO5Kz&IIv{dTm|J0YEzAE))sjr~na@3a} z(yT~*W$`N+nJg)J6V|l_WXoGk+11^(uStC?>T6M7pSt-!^>u{n3fD`}DL0^QCQp4s z;YQRqroKsPJxDgZjbL<^T1)sP9L8Z;AJzF7wy5i`k$0fz%I3V*9ZhBLC0gLsFjlp%Nb^ zJlrXdq<$jxqeLD}-3*`lG1QMWfjWpeUU)*vP(O+KDbz=bJlV*x%2TPIM*R$>P9NMK z>h>pKk!MrCRKYpa&!v8$V*3a{{e0>dB*9SCMdB|OUXrG$Uq)S)Uca3B71Xb$ex(Fg zr2<3ic8%~_H}CZt-XOd&K?OHiV0Y{m>PgA1)XUUwqy7l>+o|7A-Ta^Woz(A9aF_6I z*Hh+Szb|c~)C0l?jj_UqgbzFYqtu@f^BDEVsgG7XO87*AT8a5T^{1#momRQpXQ}6@ z=cotNJrkQO^MA$m5rBGRDZ8SAhDD)m1g=kodXIXQdP^zuf9iGW4Fye8W*ypTOg&br zBka09ed;e!f6i&1r~ZPAUv!$6slQJB7016yJu`pDyg~iVB&PnBG1)uh9U7BSf0z1q z)Ze52kp%AxKcH?~0QE6L`j4r9PW=;OEcL1IGuJIS|9?&WOOaohMzd)6jqux)r2aki zzp4K~{TJ~+3V)*hvk6p4-Ta^WZ`A)#@Vn#xr2f~Sa}rShhsFfd|D`b=_5V_tl{D

    }Li3g-KwqIDc#^f~SpfLrF5#r7NX+UEt8q+AAI#s4?pfN3t8EH&s zq$#JTF+&=w+e|cOr7^QovkdXGiLs5q^_i2#qBQ2BF`rU%)0ijK)0o$3=BKfcvf39K z3#R2H-wCm)&Ho*<7>#8`E>2?!8cWfT|EI5eV`&=8q&;2dO<(rm?=5b!e=sU_GlEydN4H(AZG?M#d{eW0N$d zv8hs<(J=paE8J4#R!*}ujcsUbPh(s0+ogOWrm=(5xbuHwXBx-Q*oDS^67Nc5HyV4< z*j>Xtgy#SDV;#)@MeZZq*YW$)IE04zKaB&02MG^0K~{UHn8Rosso-!LN2DnYj}jhj zOr}4U#(6Z3qj4sU<7u2q;{+NbX`CqKNdu*ZC(}43E!6O|G)v=j4YQ{}G|tlSY?nPp z!*gwDS9iYSFQ9Rui!Y*K=AUXLyHt1?jmv4+Q+gU#2(J{{^B)@aR{$E<(72YyjWlet zNPcKsPs98_>t@VNG;Vg;Tco))&CnSYw4@ud3LUjb;?EB z@GXt+X#7Isdm2B{_<_cc*}Ph|G};1e*}u{-&!=JE|55Nqg7#zCzi1{N@;A-Ie*dAF z`1!xm{6}*Fn&YKPnksA#`G0dllQkz2PHeKITXRyH(40)<$e zD^XU%`Do5hbAbV)ZVM^3FwMniE<)43{4)^HTzn{AlIAKjm!fI*PIGCR%g|g-vF#LT zAx--VkPS_-lfyV2a3=GGEyLUU7^ThQE0!?FIa;g&Sz|LOaoxed*o#BWP;JDO(uG`AmG|Beac z7O*qTU2JHYT^+eQ&HZSa|BK&~=3X@Sp}Ds)*(@@D4QcLAQ}*6GfaZZT52krgTI|m6 zD`{S>_$rsZCJjWI|I@r)DF4sy;Y~E}pn0>d|}Y4&K! z{F`?xbo_1jRl zKT-|Nzi1^s{5LIqjkB3-0sqoUoc}*s|D!eDpp|uKjX$ED?MQa*bbJH3@Yi3&0(wc$Rbgp*#q1qW~+4n!~$Es$bHG2}% z(pNxRvpIeak#o|rFMnp`rk{tFJ@cV8FRl3oDOwANT#%N1=Lh{uaP?orG}&B>(b|XB z;@cBf_E{2Z#? zOR2qw^!w5}iq?L#4pwS^;Q_(}X&p3BiaA7hD6PY29YO2xakKUnPzjEvbrP*((k!iG zX&p!F1X{-%ldi|E>qMs?N$WIPCp-Nqv}FEHOzU)7cKD}tW~xaFX`M~$Wm@OZx|`Oy z%AQB-T3YARx{}rfv@RBTq3|Lrw5m&JT~6y#T9>8F(0Z(L*7Z8{lL>l(*jN9z`K zyPnn!v~Hqxqcs`3&YPX`R$6z^(#MLH%s-p`PL-SgJLNsJ0$TUddW_b6v>u{$f7+AQ z1GFAYV<&!C<&V&Mbg0AQw4S0h%2hoJWVU7+Gm8%rVSN)v~>8-Rv6N1 z(~4+SY2|5^q$!|()bEy27FkKqe(bK+#MEi&YoDz~%8P8ds+iXEVmh?CwEDDqCQ}FT z&ke;dhM%3hl{hy-MphTCdUijMnS4KA@HO|GTsj|9_j-TLZm1ypz@{eoy#* zDxmeDhGS@%?bEU?K-cmKtxwa~&HFj6uci5d)|U!wQ%E(mzM=Iat#4_4uav(3lihaP z0@U*-TKdj^>u1;V*P#x-)1HXdAGDKY{7LH{T7Rk4-$R;z#r#Km$o!K#-yT2J(4N2q z?Fns|&fcDw_9QN=EucMFnx#Dj?Kx>DbTa z?R99cLffpK_Nug3bKO>Vt6Ed3wS;S1HoHIO|FqYmy$S90X>Uk-gQ4t3v^UO%(o4K4 zZQB%5p7s{Bx23(MQd8!r_#QV_Gz@wqJ6pw z<^Sz7(^{?JY})53b&l}dq0Z;izFKOh57K^2;)iI<{M$PG+wvZD%Eu)bC47SRle9-$YHahT+$_(~4kUY)wzh+| zmnv!dP7~5D(vBp{yKKQ_OSG%B%Z{&DkX=HJc0J`2hIW&9dfF}8iLJG1kD(pYev@{G z_RF-pwEKyeb}#Kf`#IV#(0+cX;fu7#n!kF!qLNo>C&&KR21=1{xMjRWTRz`@Tl_n; z-!-MyNn7S`^L{}4!y*17+F#TDnD*ziKT)B!08@UJb{6>sZTWxutF)oWZ)pFh;9KE$ zw7;kQLspgDoS$f$;nV(EXnTRK=r;?D|J|+sPvQw_%m3Sd6OX6tKeWyN75|qhV-4f+ zjf~Cw9X}EA)FLM)o`iUEVl#i6E_VJOPeF_{na?Yp%E_kDaD)x5xwe3KI@f;&;&q5; zBwm1cCgRzMo&U$PNI$Dn&Q3hHm^p~&blv8%AiXW|JjC-#Fdy;!DVb)87bIShcp>7Y zh!-YaT(U)o7bUj;{B5Yo5=t#;Om>+|6E8=+Ov(^1JLpWjJn;&tEJ5Oxh|TJWR~D{9 zysBlhKC6pdgLo|kYr18xoeD&*OT07jdc<21uTQ)&vHah9ZYaS*r@x&vOhQucjpGfS?KUi{ z2U4ZThln30ev~-#|0G5HSgKS!iuftwCtR&<0mM(bxt=D@iFt)jRRXL4`E3SV{vN~~7f&LdbTR_W{*$s?|<@s@kxSR6CJr_J@ft5T@ z{6b1<_!99?#4i(@jT65@{3`LA#IKpgnAeHlu-LtCiQgiY`N!`Jc;fen&C-eAC;mXe zhr}N#7?a9~KPEQww^rGjKO_E%_;Vwz_6uS5{D=5!;_ryRaoKNO)%V0d68~VlTU8Pe z|4e66;$MjWRG(jkzY+iLI{e`}{6%L%;=k!6lm0{eAMwAbCKGhV8+4|lEkOUhgU!;J z$l7)$&U$txvB3Dr=*&cCayldEOhIQVI@xbJ9oq|}v5h17p<`Qs7@2=(Iyy6m&z}F# znK4x+8u2sJG4oeEt8g|O+PrhnIgHMnbhf247oD}~%uQ!mI`hz3oX)&-7NRpBodxL3 zpLS5yf@!&0Elg)oI*SZt7aPhhL1!t+mP{9;cxj=w09(UybXF0wJe?Kjtfbif3(zD` zymA`TS(VNjbZk=)@6P|7H8r%2z<#XfI&?Orvo4(tm0C}@J{|dgc3Us*^18A#+cr=0L`@>oxSO7PiGf8=Ksp>NM|PnJEx44yNcOOxI3La z6=YigoxMz%t!*DV2P$h@0G<8l?62Se(`54=l*V)prepq3=g>5z_;5P6(nTC42&kK&PZGXK|AoJ!{$I;YV&lg{Z9oMBaC zU$3+1oNY|D&U5KpAlZ4s^BsR7or~#Y=C73ee{7%2=v+?cIyzU-xth+E(p;66E4D3w z&b7v5b6qdy20Ay>xslFIgH>te^8f4(-$o~*b32{K>D)o*emZy3xku%9(YZTqsNua9 z+eG)J-RL|(=V3YzI{u--EOZ{B^C+FiER|k}y&Ff-@#s83=P5d))#}N#R;zlN&a)z) zas6#Oupg`S)0j>`Crrr%>E!A3=@jTR=@jWyM3(5t|FdhX(y7xi|971m7H6GXbUJj} zDMKfAy!k(!UOIHy=jc37=OsEXIOfHHfX>TwUZL}9I*Xg@b-IVqd4q1^X>Zc`na*2u zzM%6qoe$~A|81go>AaV;qVql-Gyid$jG?2Apz|@E&**$Y=hOeE`P|L;C7ti+d}RV_ z_%$8p{~bI3JK6Wj{viBO_*0st^9$XH==@6OPddLT<@~?%htvE;H);O2vj5QekIuiA z8uaguHx$eNyA#lzaEP2ZiRn&47rK)wo{a7kbSF2B`p}j8rLSXGhkq-Xn(j11nrZ2- zM|V293(=jP?!0topgTL=8R^bKcP4e7d7#%&{@xU0T^?hWO>^u1+bd;T0Nw2Q58a*V9!Pf=x_gV? zmF{kI_oTZ!-OTx2`H=s2_mOyCy0ZOl_WVcW*iQj;52AapNcn&F(6m*8bPuOnrh5e4 zE9o9d_iVaH(H%+mXu8MKJw{bBe_O5X3vL;<1<*Z_?ny?9r)&OC_Y}G^{O+lAPfJs& zhVB`3&!l@+wt%tS&Y^oQ-HTLy9^LclUa0tjVI|#*>0Uox{@=Y-!`o7s;ydWxL-$U_cM0#d zY}V&qx)0L5PyGFK-N`?D(H|23Fx^M8E6VuC=srXDak@{^9VN{Z*3i~7I#tqrO2em9 zUTc1qZXnXO0JxNZnr@Zui*##rdvxn`+tM`XHWjoI zO!XSZbUVh_ytW0nR(&zg(S6=!UvR0H=)ObuWeHxP`#RlM6~AW6Y|V-PzeV@Wv^F8> zzC9GbOZQW{@6r8Gh40hV7NByvW9WV?-nIbO@RKwU{~6uS>3&J~iy=Yg|C;L?dK1z8 zmhNwKzoTnDPgnlm{eiBTziVp`f0X@2_^ac8r8{CTR?ir zy`l4eZ+vLjoq%Z^Bc zl%Y2rz3J)AL~n+Kp*N%P$^Q*#vH3r}S&T{k-xYPBHygd#=`BES4tn!QFeg3pe|mG9 zCjIMwZ(cDn|K9w@>su4_7Uad}=`Ez}!oo#_iwYOx`Dy7bPQO8K33|WLTaw;2^p>Kx z7rmwFtxInidaKY|R{G`Wt*BsmdMhM>{n$0GBvSsLF{{#Blb-oMz14+lq+-QuS!}7b z>8+E->a!lbZRo8}Z&P|3NU$NjjTLNUGMj6YA^m1bZBB11dRx%jGSxVx`M-;|rMDZs z?da`HZ+m(>COkd+FMt&6G^E@`%&r4Q!`*$0Z(sldMDD`hu)F&_N8|yz5VDN zL{A$*?*MuSnpjh4Kt$|6b<*PH;TE6B3R6*gZLk z-UakV(mRvh$@I+d>77FF)Kriv>77pRj5Jo&S@h1Ocecx(qBF!Xfz&-!0T?+SVs z(Yuu1#mbuhJN;#@!{sR>!Iku`a{Se)nBKMYs`Rd-_aMFN>D@u^270&9yHO=({t9k( z`db}iTL8V=-HdnAyO*B%zxcc9*~fvQ+3yp7KfMPAJiUkLJwxwdlK=m(_lWV<^HF+_ zrEyYDZxp>J>6!o28$HCE|BKWXV9ICd1@v-`_vj7ze=nq0q8HIC(3AhW<+ zTXEM_qxUwwI=vn}JO9&b(u)RTt(wo-T7SNxM{`^udFjTb={k7>YOn*80i_l+^zWl$x zn3ReCk9+>_FC~6y;WG5ylmBd@<>{|Re+Bwx`1Dt#Z~kvTw%S!ht~$i5p2qaopuZ-4 znSatM>$VR4t?92ze{=fl(ch5%`s%QORb`ru=$q}+x4l5KY)XH#Ops}|u%T&e7ofjY znx(%D{T;+?E8LF09sXVC9qI2v-~6Bc&O?0W|MYiDN&0)xzncD@^iQL|7yTpX?@j+8 z`uot|pZ>lkvnKluH93I3wt%tI9Zdfa`iDt*=#bL!zFQk8-wdtOzd7+DX(&xYv_-re=Yq7>0d|xR{Gb|ze$=K z=$rqiN-^gD^lwQ?`nS=)hyLyK@1lPP{p`uV>wLG#R8Ie1`uEenZ-{vyO{EO|hv+{{ z|M6r<{}K9+(tm6)uWLB!|HwKEXt}BHZR7qzTPRMEqAf1P-QA@~i@W@AcZZ_I-Q9~< zXwgEslZ?A%W-gRc9Ez6z+0V(8`>k)SyPmb@-8&~IC&`;LnVB2)ygF+s^}Md0vDCkz zo-yiqTRm@fTZ_N{qn>xv^By(v{eR;3t<1)4oO&jy$KDR0Pf*VX>X{g?m!lW`L--N= zxZ9aem2k(*XG%DKn5>?k)bqJ|%Id-Vd#0!-qn3Isi&fzwtA}SX{g7{pLXhT|7|3jD3N+vei2@F)H78* zy{1^rSL(t1iO2nY^=WX_1(??K|MdtQq=Ra67#9&7xm0k59Z(V zn|hqd&rpxE{oj2fj_UbyR?N%4;Xi%){I3$TDKWPavnw&D5_4EReXz>JTs~G}9ROF%as$Wn`UUoNS{W=brj z#Og{ct;Ap@mQiAPCCvYoSk4x-V2}lFtP+^NDJ!C{-Bb3-*39LS0mjETWE+o45e-eiv4p+iFUx`EeEY80GHF1Oz zM=LSXQugvlcvQE~$0%`}636;%S3F*c6HJK@fRmJXU5S&GxJHRnlsHp~Q+>S>r_tK! zN|^r>+a-W)JWGj-l{j08^OZQKn>|;F^Lzot7r+a<*^7KiiA$8YLWxVsn)wr4?z6;K z!mD8X{U0T+RpLn{u2bS(C9YTERwZsw0{>6ksKiZu79VA?jm9lrRN^)z?o{ITu6{>X zAFagQRNmDcjeC3z+jyT6k1BD$5)V=H0DRC2;-Pz3iAVa>Kjvd49#`UtK4niS@w^gG zJ4Ffn--2g(`J69P;ssv5sKhHuykw%)yxh&2|10sD*Xi3EN_?fn7$v?`;!P#SEAbXJ zZ!3ZGC*D!w-9Gj2D>2r0o3e41vU7HV5}zpXff64oF_F}yK1*T#iI4jz&i_AG;xj5I zn;s8^`9I_ClYb?Cu}X@SVDfL`3?+V7;!h?1=#%}+mpLl&kAnG?n5ke6CI0m_ z3T9J4Q@*ueP6cN83g%KUx37u26wHf0U-#t#3h@76K?MtSTayKTV}nJg@2B8D|5vc6 z!g~}frXZzYpn{7PEUsX01xqN{RKb!8)=;pNfb1Jrbrfu=vDcDKD<_fk}utj&-Efs9#3mg?}qX5qjw(TypJ^Bs` z{+s;M+Rh4gSFnqf*@C+&!2f3*8^In5_UvZkZviRTN5K&a_Ej)k!F~!3V%hx_nE4aO z_kV~FR$%_`Hw5KS1&0wFZaOIiBNUvhV5EX$NFAx*D4$he|Nj~BSOv!`IL%#ow_$=BvyHEC91s5nd&npVf@6+=O6=44H zvX>}$Ucsdb?oe=9E{x*_VD7aF=)e6k~`?PRPw};m$7^UEP)_#M6n-tjO-xn*e z%R#sD7OyL~Rl#ivF#rFK*gF+GqF}UwdllT}Div@c2=3|A!hH%JBy~SD|L->b5X!?| zQSc})A5-w8g2##b_9sgfa*`pw#AXE_eMT}O@CBViZtj`d6?Qux&Z%%-g>xz7DiF@?mx?znoR8x96)xbF zxXo}Og{vu)!etaLtZ;FKizswf-;etK3hm~PE#ikLTnv4niGEwcC48)KNrg)(H1m&F z;r3d%tilx)+9g2YAccMI|AZ@aTUd$gV1=tFTzS^w3RmqDudZ+-g=;8WTj3Duhr%@# z#?IgE;W`R!!mn^$h4_EBKMFTcxM80*hbi1z;l>KLP`HW0&0Gr#H|{`(6zzzy`w3jFfcUE|+!d(;|p>S7)hbY`l;Q@19^c(4^M8dW!IK>cPO-oS?KFj#DLh@_`3lcaXjZS#E&&S9RA~O+ zZRZ?|O+OcQ@Bf4sD7;wVh288$zMh&(6kh6e)^)kUn-pH5@H&N8QgD^RYY4jY|L|I? z|8HBaS9k*jef&SXS>bJnqZFF|E4_wvlNASh34%F3kr)0%L+?oK`W+(vAO4`Qd*?rH|7RsvQ22|I z3oHCpNoUu;Dg0OA426Fy{9WOn3jdhZ8clHtu$KSvy26SICFfFd z0VU@~oJYy|2yFguJxtDTK^!kg%4U58>gtOqiODDXDcQf99iZf*KBk?4N-nG9;z};1 zWY_S zWLNh~5f4#vsJ$eszPRSjWX(kxxceU#i+$peV@Q?kz`z_JIT+a-WKa)^>6lpKzDsFG&;O2)tc zQt}8ZqY{0jl1CC8HA`3W7$r|q@>ula;PF1IUyWGyiV=SxTOxq+Jx^afoZqQ_>7y$@7)G;J>UX7b$tMDJ-JorAl6_a>cBAC9gucTFH3k-(BiDC2v&H=KmDj;C14gl)TwG6Zhm6C0|qWRwbWQ@-`*! zQ}T8t?^5y(ievv*(yj>IMeZhbkCOMA829sjCC%QId_c(um3)}^p?IrJf22?Rn39iE z(8vFiPoX@m8-|jYO{;%YF@O@v?O^s7>JUa9Lq+Jy3&)T1)0$?G2McM1@Sh9N+uCgN~ZnyO#F9Cl*}qwP?G0=CGGiN zwv_vCpUEQR`HxASR+g;TBYu)qC7T4UrcTgsv_JPhoRbks%fB?b=l8ib-M3Jz&978+ z$M)CCyrtw+rQON(jZ*G7nWoeMN`9-<>Pk*m$~ob8N-eD9_e%bv{l)#6{_Z*T_u9sU9TWNiO}e?z zoBwV|-P)~eex>X!fKm%W7sxi*6}acVnZAfpiz(I5dXnl72f#(G1^=wT)IgNQ;Sz93 z%lf^LT3V@9lv+lq6_i?*>~e4rT;3|(|8ukUSA;9U!Ej~AZaX~xF~##AZBM!SHI&*$ zsUb>jq|{KQ)>UdvbVfC`HnBbb(f(nJ)vpJ6{$q;gKc?*YkNrP<2z{7Rn=7?3@g{In zxS3O_9S6*H6Y;i6?V;3mO6{x^M@x$5f2HjCUrO!d*xeSM|CO@me<{WD zA5-@Hum01|LfKQP{gm2^cyG85+}AOFLSJfsi{lYKP^k-*I!LLbl{#3dLzOy&`r%d+ zkL_Vf9jVme=tsa2aHQ2t@*{tg#qLQ@)~jQbI$fz_l{!hO<4}%=?)hIXd!l3i{CmVF z!&Bg?@HEHnde2bm9Hst;ekSzWc(&E}=e?%RMfdykeBui%TlV@zO5LH<#Y$bL)Fnz? zsnn&^Tm~EKH@n!LC~C|45#ae> zDW3n8y4|wzNZzT`!%B@->OQ6JqW*4p54^We<^3oRzz3lnY2CBt5tK*aWAJhKgk%3g z5AjnS*ho#c>%r%UvliW{|d^h@HP0lW#g?Fqtv@f zy@~!7d>g*gr^fH!_tD3~aecBAl=@t$50v^?sflDKL7xAW`p7Ed^X?OLp8uG#=RYbn z*|OeIQ(q_*C^ZHBOX#;fVKv{cjS|8nOu@8c{Ped}R;jvDIi)H}<;fOc5#s+TbAbNi zb0}5lIxy>OYADrGs)-(%9v>}jrFxa>^ijT|=4&_=eq-5qTfS9#QKhCUJ-brQ|Nl_x zd!>F+>IW)+gg?QbZK;lTxnEI!gEQdomW})Hr&50_^_MCBS)8eVsF?}>HKu2?EY~Te z=TLe+#5t9oi(qaz51iMrf5XOB>G_pjSm_0b7laEzImT;GFM`q!_J;#3>(90HVoL9> z^gyLoPZrOMWuIDdL?v5CT;$&^eS*w zxSBnOF1hmEKC}HHp`PYr}Qmx^O+XKHLCq2sd(cPZC#pn9>`gYyvlho59WD z7H~^Pd-AyTWNV8p*hcAX3ATgV!yOz6c7!`Ay)(fsUhh9<2c>s&+tnSMz zy$JCC^ghJ-YeYn!ED}990*DF0j z>HjG`Qt6YGK2qu9ls5lY`e=9zJl0z9SD7^apT_^wCz3tMvhIH#+ES;$Q{idwba;ki ze0HSIRQeL7&rGQ18yHolC^b6rd@Zvt%OO?J#>C4dZ|MV5aS6Yof zN77fL;Q#4siLbM)ccko%uHGzd>oBDU)yYM|* z%Fj{LV^Pfil^zc#Sk`+~dZN;wD2@N8KP3AR{Mc&TnPN+Q3i1E+Wa7^)>z`1Zo}zS4 z=`WQ|D&0di0RtFXWxVfFC~261S72O?{u2*%~ux#vU zkV=^x1A|LLEIf3_Mw z!{HhCO8`1Q)Vu!$;=Js zf%w1gTV{R~{6DiG@j{NVpJWzR<}_s%QD!G)`YE%#GX0fVjIsgBENYeh*~giI$}FwS z;-r>K&ks?1)>?8bU`hkL+1tvKG^y;1go=Ksp< zXW4jE4?sB(a+YNdCO*V!{Lz&;RGH(HasGd#GKZ5r0*-(qtuj6y@c#_{pE-u?v3;_~ zD|4bUC-hNHqUL0H3Ov=aanDaz=00W4Q07Wy{-?~v%ABdpdCHtc<=OBYX#O8NNyY|B znG4{B(ELB1+hi_5xfEUo@&AnZe|NoCDRYZ5S1WUaGS^UZExZn1ZAm@*Gh^Duk_ zKI$01f6P3Ng8ygm|IAZP>5j}ZWS@ojf984O7p%s+U*;ucURCC0bo2l2o_!7Fb@&Dx z1K)J)*1WC!WM$q_ewZ@vDtnJI?FJASgon@K>3#qjkgLD)g~^`BRw&Y&zO#n9}P1_It{-VF&iY zui)2?1XGpyhF}`}7EX8U|8_s4oBrAH`~x)qC-_O3p9y|}zbf;uGQTPFmohU@%>R}7 zLm9jIv*!P?k7bWTKOUX{Pqb`2 zN+&COhO(!ip9)Wdr}wG(AIg~!|IeELcUw4D+3S@(PuVM#Jzv>Nl*RwE_iN+544!T-gVdeMs2{t)?`Ar5=Wl zK=XfPA9L)E_7loJrL6gXcYL0v2LI3E|5@|@Zv6|&zNPGo%D$$o@72rHoBu2Os#W@# zbM|!<{6CBTXYqf3?a01O_8s^xd=I|w*zL(UWqXtzuk0tvPEdBDvgZHs9jELh>hb?9 z{-6EWvi`nA_ETjiD{KBA-*3#~|5^M$JB4Mxv}`=`31y4Q2FhlX4ap{93Z|{nzx&8$ zQF1U33zm)7TT*^KWy|OlScNrMcf@VD1Z3?Jplk$NunjxP_A1NG_Uu>6+CP6#b}IY^ zPJ`dV>Cpc9kFwuG`~Ii0_7SkMKf#~jFYs6R8=L`uhxX+kWx4;K<^F$``~O)pUS(%G z+TWY@Z4KpSQ*L(UhA7AV{~Y)Kb8{&-Sh=~CTUNPwlv_%zqxc`@) zTTZzZlpCbn@-~n1TVY*YQ8{ydJJ{TwbuOJ-nbuZOZgu5WRcNj>(dyDlaxD|o}2 zlXCXuPvtIf^dq3$Man(Ex-M4k66J1I?ozv)IOSg}1@m;T`Z!I2zss?}qold*OZXen)HE{n>Usq};2@J*?a-Y|$gi zJ!%l=Xh*J~mQrGW;BV z0jIz(VGm5e0ERFLQ!ouPFzaaRb$shUdQwnsDyu6h$NWE6Mz6ps#P)M_V$45>`R6eI zTnioZ&)GkJP_7r+mw%Kq|My$UTE0i5T_&-=8f0pI?+1|IZI3#{ct65S#xizZ6^=E(4c^ zHvdIc?%5SdxHp(;q&u__6Tfwazt#NCO z`G0;p;_acIk@|Qil%3%&kokX}`My6O}((`ID4CUHOx#Vg8>#mDuM0@r*Hl1`6~4{F%gOSvKy~Im(}>{JDMV z&+ijosQkmqU!?pfVPu|MNEgkH6cHe~tRr;Tv#_W#eVvQhuWH?*7kM<(dEIng9FG_w&sE{X2;KIF=m` zC%_M^oj5y5`Hz&h`G0r+eoW0L@KebAKVI+WD!4U%p~B+IPf`9?<-b(kZC8)-1?3aU zrkSMY1Kx{6AkIu3Ale`{}z2Z{0@F^HU51{{zsIb;Lq?E%f{pUn+gjk zKSTL{mH%D&Kb8N(vi@Cm{x9nPhX25smi2ur%%;NJD$H(rVGcMaoU2dGJSg+R`QZGP z_1}3YET}?16&6xqVHIS$_q4(y7W*T%(4VCSz(wI=aG+ziehC%!Q(;LJwozdz6*f{~ zX%&`N!QKL>uq<2-4zi`~3EUKJ<`^H(g)LCFgj+%U-@931TNQRz zVLSBg;SO*|xRaynHt{Yh?5V=8#Q1q(cj7&)CLVeGzpytt{$JR)Pj-J5PFCRn6-KIX zpbCeoVE(Vd!SE0`yifgMD2Kx%;0Vk5Gq-T03dgB%6#CKd7{};^vRd~~}y9eJ!!T$^Rf8jk8{NH~=tT0YR=Mv*p_)3KdDr8moKm}*u6IJ*` zg-O(Z2tR@!JKEZ9U7tepe-$Rf&mFsKpQ1vj!k6ehFaZOr@mKaj62<&qg)}t(@48b? zg{BI56)Gwe$QB{~Uoijgp2bykXP&N|Ig%dmX#I{aS@TRG6y5 zk1Bkl!uKjnqXz#k;Qs~l|8D&c7RO%wlL|9b!2b*8|0?_nf3uo+OMiFqfVIt6Rrpgy z=k0%~IGYOif5CgmOtSylQvO>CMf|@whv~&R;araKJS1^+MN z|Hb7j>%SFHTwcYMRmA^`_IYj*yxvt%R)wp<)h#>aIN~8HZlvN+71vd9O_a6Z z+Hf7m_|wwjdMN9|4d8~B_3m99rsC!*;{U}>$m0J+{NK+OiuiwVOR`%*{NG<6i`%Mr zh>F{(xTlKStGJ7bJ5YoF7k47w*|EDu{J)6*7xDk%9(}TVskpz2d$Sb&U)-0NqcraG z0VoGT{J&`aA0KJO;VK@h;-M;zR1yC#;{U}Xs2|a%@<=w#Plcz!(;egMOYwiIxM4X{r5+W}QfW06&sOmZ70*%eNfpmkag>VZ zsd%M|=c{;$iWktrh43PHv9%T-50|1`1}}$KST^p-RVrSu;??Naz-!@kRui{y1Imq% z`G4_d%la!_@fH>DQ}I?6N2_=nHMhe%;GI_K&*kD>D0jnq;Judh^S$EzDn6p(1LzOJ zhv36j<3BGbK8o@fd>lSu*|>$LR2-w?(<;8G;xlBQh0np~;R}x4bL}M+Us3U8Q{wht zrRFvGI();j@mRg7;s+|erQ-W4zD@QW_%1a6@3u1*WgHw2Cs;Nf&xtC2qT(d<58+4f z<32T?qI?D?!_O@n_hgDnbEx>Gia)664wA1`OsJSvF`zPpNtm*w{QKo%1|{Mo0;|wIhETB%8?Xr@*n(}?fxYl6N9(gKJ5|MLDt_bE)g6a#S?_dc{;%Tq zmW_{=A61;8;!o)KfAJUMU*T_7=|ABr{;uLbD*l1~C;SWkZ8dz(rQ%E!^M93QgR@)K z&oE1Ksx(lgxl~$2rMXpFK&5%8nHSCn=eK(Q?y|HX%0f`k{NMg3r=zW+pGy4+2Eaw( zVvg~<=F;LSt*FuxDlMzhl4O^HOT%TX(jV2O3mJ_1`8c;r}J`f0b5-_LV2mDaLKKVvDaW3hh^Ra#G_4OCj+lF50ws3X-}2*R%tKG`uBz<{J*p>OYH~ux2!*RN(ZWRuu2E@Q4XPI zI6M>{W?AoVr6W{2QKb0y;dt8|}A{wTu#OZQNZ|NAqvbU(@i@Im;HV|>S;^oUANs)YZS@c+`|)I4D| z{x>P5r%;}T&%kFb8;|YtDt)HX3o3o6(u-tYf-l2Y;H%Jn|EtpL@C`Ty+V8(q;>TYl z`~9ynh84@k$AepSOQkw`12$n~HU52Zsg2Tsz3?l`#z*f|m3~p_8{HMqKCe61`GQF&LDhpN1h%4@2;j>>CMv$oaz_N37oUsvVz2+aRg-T<2a$9uCp zOyzA=-dN==RNjQ_rf@U3xmCu!!vD)#p>GYhv8+F?%G;^Dv&!3}?*Mm%J6Vl)o3iy*eD0U8M!5!F3$L?m+_xK4zC~s8f0b{7H^Wg@_ct3mqJ_sLz53Br)%8#i0gvyViJmyI7xCQPr{qmE%e5$KI zZD+3a;n}Y8950_&`2|zr>`N-Yqw>otzoGIg^!!!$8hqWce~&*J$Dq6k--2&j7H8w- zyDGm&@ID+1$2oS-y9p|%RQ^EaFI1kW@+T@!qUJ;R5&YQd{S34GDavPXGBp2>-(Qrc zs2r+n{;zTmOu)cu{I$NEwAf$!%4wBdWk%(q%2_IN(EMNJf>nC&EtgQr(EMNJs%5Kw z&(>9LtK2}x|I6n8Dz~hr;$5PH(hJT1RsPzt@%i$ND$eMpsWOMk->N)A<>@N_r1E!E zeh+_uKlWMbXOv&yukbg^#>eOHD!XIJ{9oli;a|}FzyHruiD$xpjg{Hp?2dj9sxqf4 z3#&4hD)Xx{H`#gMyl_6N^s~4M{$DZwS7jk6%lb34vWO~+snQRmGWpbUj;Li7J_|JPAvGga1AWg}JABa8q0JzLq(D*dduGK}oT5dW{3|HoI%%I2zU zsmd0n__yNt1_NrD@*+JFCRoPLM7gX6vl`B=*S(Op0?4rv4s_d%D zUaIWIvb)1Qp!t7%oLBZn*$3_m&HuaGet;^&RXGs-Ab2n||Bug_3jSX)|5xR3X#O7` zy_J!woTti>=tse$;V}^ZuN+5wylYUE6X1#PBzQ7B1)d5|gQvqY90}Ylpfd^V{y)Ll zs+^?`O_>^V+oUQT<%Cqn}_`GGk3sqiJC9ld$ zs!UYnWmVo)xiwxid!!ukJis(h=;kE%>Z!T&4xf8__Oj2-nSviN@m|F2jJ-TgR2mA_T_ zof`bVg8x_kvKoIkpz;sdnUImM&Sr6ScB^r}W3A2s=Y(^qIyb>Qa9%hcoF6U#7laF` z+Fw->FANuf{T%Imt2I6VE(#Ze10B2BB~-mk)g@KkPSvGUU02nmRb55ZWmH{3)n)1D za&Qn_-umqKX>~;u^M6$b!<8-T$E~`mszX)9|EsH$T?3l`$45>T|F4?=tGYH^$FlxB zt*)o)7OJkV>c*;WK-TLw`W|Eg{VH@B=mdaGNaYz4Q5+rVudyS;V( zf3m91|3|92qpG{9x)U`!!(HI6R`2IFRs6q-|5wfbRox5j4flcgf7Se7)&1cC@IZJF z#Q&>@5D$lk!o%RN_pqf|Xo)#Fq>iWL4|J%-r)zdL%zqnrRwgeO_npK;Yw zR6S4CQ&l}v)ziqH4$px9>r;6a%GvN7c&=srr#aR0RlQKv3rvak`$g1T3@?F~TGsnd z^>S68QS}N{?^X3mRY$3Mm8#dPdNq~TK>WXYoh=m~X*ZzX2=V`_`G0&4R&P=DPE~Iu zdmFqRn*Yb|$E%}J?t*v2dn_CG`94*jRP}yUA5rxIvJb+C;KNoKkK3atTp+5C6Py3X z@9V2ip*(F$-14)kj#c$JRmZ6MysEFL`T{jC!k6I7ed=FDc@5(KRs7#OZS_r6-&XZ4 ztB;Ru^M6&}h3~=lEgP?WoT{IxI$qTeRh>Zg12_>*a*VIS)sIjjGAgCI^&<4a_CRI%lq+zD3XL*@ZHBV50MOcDm$Npm{samo5o;6id z%^fy%)toIfRGVAXrm8=y8mT&6)t0JXtJaVK)sp@ZJXTaZ~`G5B~`3vQ5_z#?ES${m&@c-KErq||xbHcf- z#_!qMJgP0N+PtbQqS}0_NwxW@SpY5w7qWW)eyz5!#s2itRIcqGODer+On#xsM>O52SM|H)mE^|xE=hzHW+GVh|F0cmHSv}nhmQZ(@c-J0mW_LRvTEn5c8Y5MQ|(kLPlKn!Gx}7XiGu&v z@c)|me|%S}cAjb%t9Cv$7r+bQMONcK&8%I5aw)tFUT)dApI55ZR_!X)-dF8v)t*%C z8rAMo?ON4Ft7iVM+V$`TxB05wXoFzEO{(2YFbduRZ-uwP+u?DM zwQ;I_rrLPbK2&W2H6Orsk%}uYHXE3H;Quach%R>rw4<^e^BP_@&kOyNk61 zN&rKcw5-3YP)n;;R4s#^g*ljq1;=h>Ni}EkW%LTHLN_?Gw!MMUgb{36Ha@O8syol@ zRqc1xzEbTc)xK73x@uFY{02^g-`Y~{*l-__)V@Rc9{%7?7S(>VQ^x)I+w8TURr`hP zukbfG!_lVGwvYZ$eJ<7hRPA5Y{zCa1{sU(^#yzahW=ef_I0u}wPj+tA7f^j3^m*ZY zaDJ=td!)V~%0f_ZVas|ytoKuWHP!p8zO3p4R9`}M{J*{!l>_18R_~9u`jRN-|Eezy zm$9sOjQVn_ucZ1Q^yT3Sa7D*>{!kx`g8$de|5abrG4{av>Z-4+`WmVaRo(nQ{?AVJ zHK|++t_|0*tar}(da4goeSLJ!zWRp58}+H#*y4ChHr4kJslJ&yIn_5;)T88`r#-? zz!7kyW&Itk`cbMMuR8u;KZfkF(ELAsXH>`k>*oKep9D{~tiQI_PgVU9)lXCX9@S4* z{SMX5|5g7VJX7_nRd@csz3OMfbKtq~Ja|6506PD7mCpYiFNT-EOW|eka(D&25?8%URA@5q%$kmS{>s5^(JuyTdM!0dfTq@^^P@VL9gmx5qu4&!f)U- z_${0czk}a968xb0j}|j?K=~Q|0)K_S!5Q#(=q>?&68r`KhX25s@LywNHpl+2v3O$+ z>wjZTI2WATF@C??m{*O3)WH86=KpFe0L}kx*iFIz8w(RJ0{ivJ4p3t`H5OH4Nj32Q z#z1P!|J7K+D*e6v2L9i`{~PB2YAkD6?{bYnY7ABb|8L;`4fB6BRAVzP2pya-8F83vL)OKZf)6k+_qI?4>h(^V`nvdn>$dmBgFsX%3VYIqI2*0F!y9S?57>(v;g#tpRT%-^+q6TI26yB}{sxfR|9Z?~+!H`usSji=NY ztp@hqxJwQ5e>Lub_d@gk_&t8(0W}^~!~9>3hoJet8jn~_JgSeO;Qx&$h@Z4{XtR`;l4U{qPP572&<0JDOHU3fKT{U{u zcu$RSYP?U)*giGm)o7|Q0sR9w5l(_1!jIhQ)c6>F0zZYH!O8G*_ywE-zl1$7p@y^T zK#i;#p&Ds5l4_XwyR6aeQ1^j*BV%(^TUSnvq8fQM3YK!ByTV$5^Z&BlId@CBYfAMt zHTeB+!`e}!u13S&uelS)-HCP2Q*K1`zXjW{W20R+3#!>qO&eG>1s8^kSdD)_((I2i z04@p_v#cMP=HhBDrREaoOPcPzsJS%CGH_YA9312rZ%cCpHH&JlsOD%jS5osNH3zG? zpPDPHIfUX>)WrXr=KpH04%e_2{BheHs^*?*;{VOH$gU07f$Ktk|JCI8Urqb{mzwtD zFEuxU!{Ekn6E$~Kb5r8Y;O5ZH|FSHSYT_0yMY#+* z|934o|DSavT&3m>h*zuW{NH7r|2tj>uXl{+;msS>yj4y7ziIxj<|ufJ)%f$Yc^k^@ z@D6yVW#gXQrRD@R?^g3AHSbaLaW(H%^C30O|JCFI(R_gTL0c+5R`LJlBj}Gp^Z)oA zLGuYUpH@^A7JfF?fyXz~+)ru_s!&9C89 z_zj$<=C_KR2ToV>XEnb={2u-Qe}q3dT0gCkUlh%&=C5l0&CB1^oT28QYW}X~AGVKN zrTZgL^DiH(`H!MG)SRhkHkSH#R;8lZQ znn8-(g3BvfVOFtQk)oCC<*coaR;G9rMXM@WE#6W;Aki9%)>AY@(b|fJDq7PorD&}_ zi?74t>&{Ymxjx(gZrI(rVT!gv*;vsgindg=siMtMHglwJTlfHRE4Z~Oadumj?YyFB zd%4de{@ak9?C6SihP%LB?HKb%a0qrI(W24_KJ{;z01$oxM#z_R{7 zzD5Tr8lmW5MZ*>0|Nh=xg#SnQe}w->_`m<%Su|47v5N5j2>*}p|H%9QL#zw`kMREp z|Bvv0|IOs+WJPBwIz`bLicX~-|BuZ7ZS$?q=KqS$G{w(&qq7xVrsy0+7b-IUS9Bgc zADaKi?{p&kKQjMUbO|*7kFQ_R<%+IRWd5({N_Z8#+G_k=sR;j%@c+pCUy)rP;`_tV zO^TjTbhDyI6^&AKm!ew~-KOYPtBJ=D|BvoqS@VBIqb=**IJ#TW1B&iJzZc^Fk@U|Ht>2qGuJor|3CFV-!8F=oLly ze`Nlz=q32F)yI9q|0DcAdYvr(@4Yd?|0DcA!v7=le?{+F3vtc+iat~{R?&Dx<4kw+ z8LOE9ng2%b$UhhYWCM&}KBlCYnpF;dUJ}N#(!T%%tKl;)s1J?9MdqVBK6a{Lz zeG#hVJS3^sY>HBfnu^kja*FW(DC?H$j#yriGx-877hwsOt)_DCA)P^0{3%_#gR!&tkP0=@|_$y}QM`k*e-@)(U5Aa8KqgByQ(7oeu@h|XK z_#2!7e}{j-KjB}{J^axv^$(osh$-R!PH)Yw)?l^fP-{M0U29IY<|3FI&I9LljL*T= z{AvwSYXS5H;X+VwVMlkCskI2~r&fQ00e0${z9?Kwt$_rKcl9NBxujZ45iH%+m*M5I zYAt7qJ2$P7q_U+3TVCzgjmscK74WD5Kyl z5dZgA=hp3N&#l%SYQ3x0ooYR<)@Zdb{MKD+-EHl7Pix()mOB&i|Caf`S`WYnt;RcQ z>tU2f;G^&{%lf;fttZraS*<74dQPpU$UY69fzMiH+^gqNUVtycmn`eOsP&3kW7NX` zTljwq|8L>{@%i;8OT7j0|CafGd}VCCr`8W@y{}eBt+8r_YK^0EJe&YOfD_>)cbKX5 zA^Zq_3_pRN!q4Dj_&NLnPJv&-9+-fEqy4?|uv$shl7eYx5o%@3C@jdTl|#?-68~@E z|1JE#<J8!L#%{9Bai5dUwP z|Hs#h){koatJY6y{i)W^)cgW}g}=cW@OQQTU@7}I@+g17zu`Y{rel26wP!P>Jv*EO z&I!%`o>%Qf)t*o7ernIJ_QGl}K;?pPAt+nQZ&7;@i~T$Oc7L)1Oz}s1 zdoi__RePY?OQ^lL>E5;4OH#QMTpBK8*Db-&z14ApypP%w)!tX_3)J3E?UU5rU+ocUAE5SdwGU*egW$pN5Np9- z8QX`V90m`EM_4xAmXT^7tM-xTN5P}vF;?S!zK#F4@&EP-WKXngyzfp{`+sVmf_^GI z4W16qaO{rinQEV>w)wx>XG8qIeXiBSt=Z8YUme;Ps_l&TBDJqo`(m}PQ2P>=x)fdp zFSq)5B(Frd3SJGbv21)4U8nZVYG03j12q3v`zEW2kBw0%w?OlMwQsYm_uKXzYQL}c zooc_O_Gq$q!MmY9w(ljr&-|)=KYRc_2p@tE!$;tw@Gluf_r^i(=iv+RMfeirzIXc-;#VErQbr$G$KFtTjM{I;iaX{%bEnnY^!y$8E_~0? zA1AyVtM)j8@o)k(|Bt^D+n%KMbhSTJyQua@YP$*i$7+AB_9s++3O|FBZK?R^`T}JN z{1Wz9*8ewvcA$1f?GPRRZ{z>%wAIANOqOg8=3&9I@wr@5J5sx>c2(_)>G679;Px;6 z-);~$EgK&#Ew#T^+x%bc4(x?rSxwvm{@?xveH#4MvQ58@->Ea3+TW}Fr`kWL{j1tP zQu7o18JhohkKW%rn|LYi^%bnTPSxB8Z)R|YEIW5~U z|5s;jIFD8OZ%=jRLzy2g02j2Z_k@nrSwx+MP4P#5ryn)=f5-e^okcC{N4PUkos-mA zT%9e{SwfxF)mc)VLF(ZD9sIvz{;$rma5-Dnk6~wdbq1@0|94g-YyRJDd1aJU;Hq#n z%lh-ZvxYkBsWU{KHPsnvy1!0!)}j*s@8JI({6Ajf`s!?~&IZ)r|DBD9hgl2p7Hxup z|99~J4*u`oKX$fMXAgC@QfDW1wpM2cb@2brwk&1-uZ~?H;_F>!M;FJ>_~`6Rb{DuS z+zsyT*d6~p)!AR2z0miD`@ntSevYwUbq+u|5FP{%hKIo6js%CQWByNkI6MN5fFt3N z>Kx?)VlDw4y9B6ntUAYa_2W@afG3*hT&Q!hIqb2Y&=@LG7CBf<6X26b-iDmS6rtj;KcTi~re>(*|gZGE_dZMhSUhUWiPVB2_) zIuELIFY$fwe)xc6{8>!rA(V&VBk)nn#w|Rq&P(b%q0Y1FJW2K`_%wW`Pvvtc&%+ns zi2~D4Eme!E%>%$?5Lf0QQm{^!?Bk2@7g-! z)%if338wgYU}qvVli-K&Bg=Y!?tG$7sLrSAOi>4K>`bQSbNGc-`p+Xe_Q_xq(s8dw$jp~%tyP-N|_0FwMMV+73sjBm}I&Kv$ zb@2ZV{@-cRT4b%odj$XQbkKX@SC(~GQtRPVb)3n6Lp%+d|En|Iu{$!~qx=AWgg;r< z&o?^1sPnHnzpC@6I{1GF|L^=x;_^$t+)eCm~Y@&Dchs9X@*ksOa?@4_gHK>WYAzh(WbvUgGSE~(zd$PR>y z!zHZ7k6!OmDENQxGQ{Tp@fEgrkb2ip@AB$hS-tpw?~2r{1P5E?_c`KKApYOG8u99u z^<&sOM7`^%cPRRr@c*bf4=5>$uZyc-LN8GfQIY~mR5C~qP{e==O3o;fK@j*OISP_N zqGTjVkes8SfSDvHMnIgjlXLc~cdHBbJ7>=Cyt?mIb#+hAt=Zn*Ui!bSs?_M;ecQzU zVXH<~C&mA*^V3!fwr;T1hV50@>cI9qY;|F42wOc?(*JGs88?t#*4{PB6*q>h8Ej2h z)0BLHd{JujT|Ks!s5B>ECdL1)&y?*o*jmHZ0=73{d!5-gB&$C`Hu}G<74^5swK+qz0tS)v@7?y!x3tp{uaV0#C)-mtw(y(cOD z4_hxqvoC$9^dVOvwUqzksSRBKPNYnTga{CHbn+ss58gJJE-g= zcagivJ>*_;AGx1AKprFyk%!46@YHjCWQ%CYVvlqyVr1-x%Tg3li(_Zll<6kAK*Cw0t ze=lsx|NnvQ57<=YpOUpc7xaG{{oi(-eQ!usf5Wuhgv|-tztnA{opeZz<%INqTMl*l zzm5K{e{*E>!4`wf4_gqnfb_CHvmw@p$p{&htTn4RY#G?Z|6xm#DKed_CQIc%q5Tf> zPRZ)=?Rj8t0DE58E5d#^>}6rU2lfYGzn7Kwk@SDN_`mh3w2S}44wC+Fr~lgvQYoa$ zU@uG-A(j6tI~~zoPPg zWuY$=(zjCE%fVirb9jn;nyerl^}U_;O0ZX>SQ+*z48;Foe};Tk(HxoTu-AdT2KAa` zEwZ-MXuq}Br9%I=KgYPfWP@st)R+xnZvlHF*qgxqJe9_h)sAFu3VUHl`|f7qLm zFXgIvnTq&7?5~oqNmk$WYJVN}_OQPJ``fU;$!trq6)FC2w$++S8?r4a{%^7!VDAch zN9vu(&SV#<(LQYNMx{I1gM3G_`tPmmJ>h5t`+Kne2YWBrSHRvI_L;EvfqgLSePQnp zd%s-u131D!lKyXhU$Xj>ZXW{s|6u=s*`eexa=6s!Pn>-Ol@H00{44 zBgc~y$cf}6axyuE{D_=NP9r}irzC)D{cr-;&$saqIKR zPsjz5)vJ|#5$sD~Uo49D9Q#t%d`d1Om*>i^g#8-qt6;wZ`)X#_kZZ}$$aUm;as#=M z+(dp(ZYH;oTgh$Y7vy$w2f35nMec_EYuNXwn9aSg?_;o^JU|{K50Qt-Bji!?7^X4`**O@|Ls3e|B?KOJV%}OXSbwWks{C zUts?o_Ft)AC4ZBw^-ldkMf@Ljz59Qw*!tPrejWCku-{^ACl(m^_< z#&Qh$zuisU!*j_?`ba++AcJIx43iNuO2)`InIMy7icFLIm*V!Uimmh3aR(d~;kXly zVsP9A2jIv9$9-_*mH9aCChsBdRkW_^IPRw+{tw3k!NQ5=p^a6HDW@_)6h5@boK)T^YUG!?ZdsO%HulakfP z)=`d1dGaapX|jT%{-y^(t*M-y~Z~Rf}=GYz2ImAM<+Piva%i7p6oz& zR5X1%!_fndF4Vh{-N^1zV;!q^sJu(|B;S*)z8>r74afU%^ns%v9DPOCPf~UCXXOBr z{_hwhS$#FtF&K{Fa13Gg19B)S{%_ue|4|u1en^g#taaQ*!?6yIF>ow}V=NpC;26i6 z@#F+@A~}hiEVtA;rjQ?zQ^{%M$K-T!204?QMb0MYkaHCo%!6Y-9G^&2eeM+1{~&WL z*3e|#|AjIz_F3p zP2}g~W~tQIA{<+(Y$NIaj_s1Q&hVXZ?1N($v%5+0e>nC^jrA$pPvro4kUS(=y`nje zz!8JvC>)pII0nZza2$u@D>zQD@=Nk0c}jX&d-pY!)8rZQtYr07Xvep3`~=5$)W0Wx zAjSX98B70n(ElA5n7t@j>%96Ijz8eI4972UToGM=`*r-v%B!UKKODbHR$m`;{0YYm zIMfNR^uNh#7v-wH-zf=6*I(p8+)Qgbxf2a7r^*!AA z2=!v*qhxWC{_mv!J9+=7v!pt;;4DSTEue79jg)Z8{hx3?N%H1TXF0~@$)`v@f7@As zaYeEcDYt;aDffTES(W7dpH8{|6V7TRZ~k=h=1*r$Dz(VkWF4|DS&!t+pXzVcWP}Fr zJ_%<-IPGvYf^#LD&%@al&c<-IgR=>oE#PblXLC5||IQb=@8bV(zNBbu|mWC;i_^|96W2!`Uj=2yatqO|~K1N>;n2vpt+$;p{+N{2$IvWM@+R z-*S6rH#mF3*`0b1@*PtA-}=3tQ~V#!USw~wk7V^{&Djsmad7sB^M7y-fO80(^na)L zKb-HAgQZ@7vYhmPC;i_!jM?Fm)vJ$l1e_z`6#tixgN!hW98HcP$10lacsQ5AIRVZ^ za86`)5;<8uQ_d;mN90s;8u>9fot#0=BxjMc$vNa)avnLK{DfRUE>x74`q{xr|96W2 z!?~3FRMEU6%c-mo#oDh`aDEBrYB+bnxdzUyaIS@OBb=YHaviyz+#tR56>{e$D)fJ+ z_&=OmB&$8#N&k1!|DEFhaPA;?N{#kp=WaL;!?_2}eQ?tMEuH@Fr2jh)ve%(py^c^h zN**Kixhno|Mm`DWc{oqOc^b~ISo5`Ht#k4WoZrKFmijm3x1{*Ltfw+t`oB~BAI_i1 zbId-?_yU}NzxPm7mGWB>i8nR?c6kTqWuM&fisR{k^>NPdIPDsZKey75cxE z{_nglHP%`B53@H(`oB~B-}=7lbik!fJSSZ0gXV%uooP96M&WeB8GzHnUS85i`lYWm za*#@h43iPbTJK;C&NQ5H>IpJQrldyS&*r56JG0ceK)CLZtUj+?cfkd?^1yW;TzRF& zbvH@>cZvU7S8-k9|8V6aA0Qu;to|*hD?eOs!&QKKL9!4@|92H({19AE!u2rYq9py_ zRgCeYWN}3XkHPgggA!y(vJ_dGEJHq_sLWO<(<@7sBg>Odkx#=_0j^i!st8w8xGGVs zOjaSQlFyLOlGVuSWDT+=S&OVq)*jf$=lFi7M z$mZnBr1-z77ypN=1^GJp2Kgr0k`(`k>n%mot2LE2WLvVGWUukFtgy+zSyva2s#!{F)%*ZXkwXLbNN zkQ^kH`mA;hrZR;5fE+4WeU-^I9IjDt{g3(x@g;W-ii^(OqvY*1W9R4sUIK@!t(%J z>fsM=xYWZR6xG8Y6pzB4hU*yP<8Zf!>jZNCgiAgDL1j-O=Kx&l`41{q&wo%<&wo%< z&wt?0P_8p@okh+%xV}NoBXFtbKd7vF{)3`={)6HVq?c|T!8B$19ktW zs!{iUDqbe9km~+VrTj`>C4VD-C;uS-BxTWo>u>TJd7ZpL{zKj*|0Qjtopg{+QvEhW zjgv#_NqQK2Ngt`6|D$Tu^M4eBWQYut5i&}~$T*oGlVplalk(#yTv_rzVa^@oo#b6) z9x^X^H+c_vFL@t%KbenwfP9bynV&2`79d1MDe44C4RwOHtmB}h(Rq`3~S+W{govcCD zBx{ki$vR|RvL5*yS)Xh`HY6L7&y$VGCS+4mJ#awH_C>N8`4ZWje3^WOe3g8SY(c(G zzCpf8wj^7TZ;@}4t;sfITe2P5p6oz&Bs-Cv$u4A9vK!f5Q5|Z=@9>zvOZFt?Jw;A0 zvNzd>>`V3|`;!C6f#e|aeR424g#3UUN)983lm8<}kROsG$x-BJatt|^97m2PCy*1# zN#ta53i%Pq>pwZX{*%M&KRMH>&md=#v&h-x9C9u>kDO0_LM|W|l8ea2<@ zD*l4Xc5(-~(`0w48Y+8CuopS|*m1vB7#~E=56F>I0y&4tBji!?7PoEKrr}`{E0kAo+mGm7Zn*?Le9?&E|XVC`hO1nKj$iy z-^kyQ^M?uw?RimNvR{9Zf5WZq?izBgBPWiW8`S?HZ<7C#HquTyNGItc>Hj%;Vje19 z(ntEq02w4hWSESQQBwS0uBFHf6L8;)oFwBEnU<`iGRVm?_)qAj|GV#Gd>5IA%uC)) z-lJ$8VfTGh?kDq+^nbS;e{1XR{L~AO1>vp>cOked!(ABel5iJ+yExnr!Tku_55rwl zk1Ss*WIn~+~wdd4fhjpml2)4;C>SBvihAe zb1n~e1-PGrTmJcbuF8sVSJK-xGp_=7O}MLai_gGa9qwo0t|s4O)%cn+$r@%`wOCo3 ztRppg=2BCS;&X7HqGLY|{VTqotUCr$%us+~XLGCnvx?3GRtf!}k~N$rAG?VitS^_f!Vc z;GPTj$Bd`LJqzv`aL<%8N}al@Uai`0^~TMS?zgxc7*nZc=jZmEY`0 z{eJQQ+=tY+IJgh$?{aV-mP&rFgIj(7=VN@_$KY1q|4*u^!hM4L(oFjl+*lEEB;UM8@TEJQXr22Qaao}z#V}5N4Wol`zN@6=IL<`?(=Y8f?NEb%0+pzRIGju zm0p+Oz6$phdF$05pt*m6`&S(^`?uhyL$T?&^kz{_mmxd&K|YxtFB> zd+vuv%wKjyAAiq-@RVZ#;K|Q`{_iO$WzxM6Ss0!oMtO+J!|)Vk@CaFqe3UFsK1M!H zmLN-#rO47`8S)A8NwTb>_3Jj-dU<%Bf+q#f)67;NE0UGqnGH{6csj#Vg-TU;UY85A zo@dBs;i(3X`l_$=>hRQ{SW^bq50diKhNm7pb*R@B{m4ni&yn>-k#HMg;f5=+f^asoLKo=FTQlT#GsrHXguz%vz|X`BZA-!oliE;F0~&rAlh zMA6?5J+cJAGnbqP&)4wGhi5%J{QqB`1@Q2ne0dg%>v|T!vsgYv5-$-4R<`E(6rMHk zEQ4nyJo5j)#DP64w8O)*N)+Y5p4H;OQZN7f3!cy5Stow0vYH}pU}__|2_F9QFVAK+ z<^O-dvz6RNenD<0caS^DUF2?fjxg8*&t6V=AGzO5`v5!#sT?8?Yn|~?c05KNC&m1k z`jR{e&nfEi{5RbZp40I7;W-1(C3w!lBNzPP;jaKZ-&)raJ>SD~4xS$@5BK~CkNo|w zyyRUtFYk-;aL)yJ`2F9~)zNdna~Yn0;kg3O4S0Tm=bAXS=T~^HGT`-p&+pvmALO5; zx(ukM@wcKFAPJB7KXq9S*quv&RNAQ9Z`H%&ghzZH9v4af_t591UM&iWKB?E&8$AJd z67cZ*zlZ+sq5pd#@WkMWa%5g1^vLypeU}b*KPkH}qovu*NK+0=79RS)m;Udi|9k2G zUi!b6{_my#d+GmP`oEX{@4a8fQMRCl@;)Hrdmki0=2x_?Kza+p`xv~1;4KPoVP<*# z-}?|_x&Ck6tM7e;3a|frdHvtZ>;L+wdLM_kB)lc0USC7@^7_A**Z;j`*q7J;)%z>+ zDGTp4c+0^%4Bqnawt@F4cpJg{G`uz7tpIOTcq_6}eguHGGFe5@x`V>Y>;K+osaGSb zOIDqnQeP9^dhqi4zqdA(I;33xw|;N#<@J9rum5`+FxybF)(FqT`zpMR;cW(Q6K0!| zy#DW%>;Lk3mu1{>jE%I%$wPf}0 z_q}c5?E-H*>g~x6WJj_S*;!FOl`@~M@b-nb8@xT??M|f!$?N}Kx&CkV@jdFj$lhch z$yzh-2k-mv_NP9897qn58vRTIFR%Z5hfx23(3F`aitu$qn$z)1Kko2(R`0XIay|n<;J~`S-uxZPfYq zzuxVP z^`_U?od0R^40)Cm^EYSpcko_@_j`EH!}|lXKaxL@=cLj)!!J;|NM0g;maJMmE->OUf%!d)o+d5{|WDZLf;)E-znc+jPsCr$-BvW-~)X3!j})e`{27@iDFIaXASk^ zp6>zp9+Y!WiTVum<%h2jdby~X6O_Dhp#C4h@$?4viT@{ z#Th(CK2FmA^)dIAg0BXArQxdtUm5ty!zca^-;-onvYeuI+-_z79kmCO)TN%Ep z@X32EGn8@Y|33P^uNsx=lFiA-xF&oJ;Hw2+9r(omt-tB;)n&FG`5akavij}vf$+ToUnlrpg|8)iud${D`8xRqN&nXl z<7)+9Tln6hPXG6{X52>6I_rGxsI(_LkR6%jdF$&8UvK!j!1oS(U777h(*J!uq|!QW z;{WjVB;O;&|8u>weczy40-$(Gh58o*G2E#WTz9FpqfE53SZiJa;hPWN zH27x0_c4{}pb`xY|0h+Hf+dcE*1rSd7c zj9e~R>yx#T%BliYe}Hc_d^?m5-x~PV!ncv}XYj3Ku%6tYDCd=;RBj?ahi@~3E#y{m z8~FvfT~WS6N|&ARe+u6&_~*g58@@yE?SXGUQ+wgtCza~{B5V8u@Ew#`{WYKTJq&*@ z_>M3>YHE(bC-v~1AipH}{2$*b_?4OP`9D5B|HpS4J~w=P{*Ui0d>2^EM*#Ww2p}IH z0p#N&fPCth@cBPJKL5vOJ^u&3^QxD6E8)8c-#_qOf=>izxODEdHMr+!03*%qJw?~~{M!)GJ;{C^*x|L^1T|9yP^zfYe3FK3!m zdf=A_^26sPeen6=J^TXc^{sQnJ`Vqr3`)RX($tiKzcj@%MtMT_qF5IG zatz9w>{Dz$4SxkuteIDWzdrnxO-&WnRE7T;_-iqK7JmK;Kz6V?l^XEZlzMA~+7#=M zbw!uTdZb(eV$i_o4cTl&K2J6#n~+W6e}Tb^il*;N@VA1$IrW!Cm+@aAUnO57Tad5A z{|19M$(D-pQs<=qE%-ab|F%}(Z_R=>@V7NeJNVn1xC8thP25QWYe%}k-&Hl???!ev zH9g>e$Heb4)f4{rv|{@9hQAL}eaU`ge{ujhP?5nP_}^zRm>fcWKn^8`k;6&dWd!37 z;h(}_B>bb`p9ueG_{YIN27WPrl@iaF`HzQxg5{0sNm-&yA}33YTFXTF2>w~{PlbOv z{L`p>ELlB{6wIJFQ;YD=W^)cXS48#YN6O|)EWs!6FEH^!_!m)JOfDgpN>=@6SSelx zzp}*T@UMe^1(lWLDsnZshFnX2rfB)Le?9zL;ol&N47CydO$Kg$S>gE z&R_?*liWq_RxFf=!M_Loy@gWhGrq4-auxjh$php;@(_8LJVG8Nk0~-Z4*v-TUy>(9 zSA)xFUvXPs=fC?Z{HKw65B@WV7Ki^VLR;Yf2EoVR{}ur?hwl)m1ONB%2jKq!{=eY= zk$r!H|7ZBmF{b&;5x4;VMJksR<)yBD`7cws0{?ID|DtvHe}!MnU%s(OM=lnA&R@M;<jqLEsSt zo<*P-0#73FC;}xB;F1v#|5q;r9!H?Wt?pDxkz4`-We|8mvK$|QvP_jjpfUpG5fH;i z;3)*2&Q()U#|TuCK)>CADhO0H`ZGqXrW6FK8@&bs;{OQLGD>X;lCD9ZIRY=6_!R_R)v@W@ z0)f}r_YLw*vZby;pp^tN!?zK54}sPQbVQ(y$+ktHor&8c&_Tzn?}R{i1Uf4Pfi7fM zQ`yaIx(D@ljQ%d0Jx#V30t2Y@Mxc+W;Svz&hk*FMyku?zO?D6h@2ePr!A2QkMjML2 zR0Qb%f#C>DKtPp^Mqq@g{1AbW>^n*;rsEijV-XlxS)ZZ86t5ZK3>{Ro^!-~a;05jbe-4p!{D<9)S=UCL;($ zrQr4maRd@fCAE$~$_y^%&s3KDPZ+#|yc0n&e|f3n6U>WX5d`l>P{rc^2+9J%;64QJ zXONG4KMVkV5WMaG2tLH@!(>rY^9Y;8pq`c>TP&`1&gXFi&mmX> z!S@g>iQrQ#D1~5YU4vj51jYXme3GR92g{jkc{9DI5qz5k6%ee5U=su@Ay^&3%BHdk zf>jZG7QttY5v;>;YLT^d0fKcUkZII2N__+yQE7l+L!C84aR~@E zHqE98Hb?LUU4x)30SGoj(DHxI;>&C^5eYGuxTu5)kZ)U^fKC@Dc1z$`ZhBy~}1#Xu`?n7`Zf;(BTjr@Y# zj^GX{w(56L+)eJ$I)ZymcE3>$Ab8NkhY&ohV{Y*%f~OEXrW6E^lP65&mu$)sz{;=K z{2D>AdIV3CXAnFq1y;?s2#VVy_#MgnKbb}FM=C#=gK!=p^#Q+tU!<47X*K0a8*%W);ab&f|may_@@#7)-?!TL-0C+ZUk>2Xk+(($eZN9Qf7@~ zN6>+wi#nG8c`s=GtU=Ht#j;;s1bqkw7;_1*MhHrQ^a>*+c8y>J!6<@h##|kOaRd`= zCQ14JFE49^41zTO;D1_2=ng3h@lGBI@*q?Yp}Yv?L+EZ(a}Pq|{|Mb@6j=gfCLzoJ z5mGT&lbsJVGT9dIF)6 zCR+-j(g>B&HP#M>o>WbQ%97=DrAcws2tCbI1+t<^RYqtmLRAoY8=d+a4)b*e9Ec*tbZxN!;hrUDTdxU<_yDZ&h4nLW3&fU@xy1>2{$xEh^{vWzx z>VIMOSMnR?fe$G_ZN4NnC8j7OdukiC!8k6+@aMN7b7ZHAysb&bj#GtukWv^c*Uy-IY z)N53@E`(oa{03?KKimr8t_Z({aC?N`mX0z`YqAZ(ZH*#JfElv`vmFuULJ;oEW*1$l zY7p**a6g2*Bm5r1;{Pmo2jO>3+*1On>}8bR2=_5@U%esKM7Te~1B^Zp;Xx+0mH>o@ zAbbYl4-j5}@KA&&AUq7=Q3ww=m3r$V5T^NuM{1p0A8l&Jr~u)y2#;ehK3B~|gl8i> z3E_{KnoLeXSo|O1sR&P#V*Np|j`?(^W{@)xo^`uGy3C<2O8~<2$ob?aik#I#gts8P z2;t>Wza5scC8YR2!k|u?IlqCRR{-uKi zUW5Y(`=p~Z{SsJbT@c}r);VSb;RM1_mc_J=a6DIi65*85(`JyYQT{{Z4l9n_iO5~I zJ4W&%k`EE_e?;yf#rzrEhsgapwg!wmfXIW06k-;L_+4I?XB{oB(4I(cg(gG3je?(p;#rzTB z0ud4OH-m`zGxY`{ZzA#*@Vdo%-)&k&hOaTX%W5t)t1A~xy&k-3cLAu=D41&odVM;5B4ywuH^ zk;P2W|07Gaj>xAJms!7wj;t{HO6sc+5&uVIjnUUipnq*0S%=7aM7FYE1Gy2AO{Vg5 zDw`46A_{kz$~Hv4U?BdF$PUR$u#?;+O?e;pAYw;kFCu>-vJa6fi0nt?8$=Euatx7! zEIuT~()TbT#{VP6|0Bl{`3jK}rshjlo0f9j{nGl-lO#d?FjMdTbJ-!b*Q z=(4RJ5c$!>=K4?MJX06Qi{vHpXGAXF+IMd87wW%~S4o<`jQl&Be;^|MZ|3kf#cQHS z&2{nyBL5iWCY66ln|W&-h~9;WlcEce0D~OTO?nXVGVm!f@Jk>^K8Q$~N(hlKB5}qM zGD^m7?GYjgDoN71{?9l=$`XLcf5PY;h~B9JYrmp-5G{;oUPK>2^llc2|1-E3(fb%! z{*P$B+gpr2h$u`Ymw;#i78gXckm&m4j259N{*UOxqDxSed<4;AMtM{Mwb#+d5Wj%v zOF4*?fh3RYd)vh_*oVbwuB${s#Fb*%HxK zQYP~;*MFj|5$%9z8;WgBwjHAFCBEee(T<4H|D|td7I)DFh;~DCB%<9B?Sp6!Gr~KF z8vl>>Wc_=H_F~XmcVyfb(GM8(Bm0vB$bpCsLUb_W_Z7|Fncx3LhcY!xQZlRIi1N@$ zJOa@Vwaz0siUp&|Fk~e5`zikL@AKtKN-=Fs7%Rq9OMzu6hB5xon6xr zy@}`yMAsoY6Vb(p&SG{pIS0{C5S`0-9ywo8Ue+KB5ViatQCTmz-6e>wWbsl&Kh^b! zE~By>(G^-TBdkJnHB)O$L>HpEqh;GrvLOCGY z5dFf$vIKCPolNZ_cbn`UMEB~LHTw}gi|7GFPa%2`(c>&Wgy>;Jk22;GVC}oP{u4dH z)R*K*MR{2@Um^OnRuDan=$TxpZxFqT=(mWTNAx>He^e<%zbCD$K#2Zi`dZh25LE_p z1<{L${>;itWgqJJU!XRhquh+flu%?LMGZ}~q* z_!luCYC|-Is2$NDqRRh0h|>R~F4pJhF%dQ2|D#^&KGJWp0c%?_r4XWFW+RBk8AK6{ zNhSA%N&-M@h5WDkMrRcFdh~;G<{?FhZ3G{)A-G`X* z|5!f69xyfX0g=6q<%ciX%qzzrDrB zOl1jESrV~Q9J91h${;4@FE5!xS;X2SRt~Wj5i5@vjXm}hVo#fTE&;KMs)<-7va;!0 z6|s7VJ%dCnL9DKhIfv&Edmgd+Cffk9h9+*LS3}iA ztTAFu7&Ikc&^4+6v1W+1LX7?&YmQh87SR7=^#9naR9=%V*1PjM75abdO~hK}O1;ID zED#J@lWh=dYm{~p$kFS7SRceXBG!X7oe=A6YPulS)x_PH?JiB}^$wfj|A^82WA8Dh z|HtV6R%Ktrh9cIF+5U}2aUx=q5Swh3SqJkY#MDQ4Dq_13n}!&jGp3e+>4>dB zYzATr*mov53$fXV%|mPso8td^wrtKv>=RL}SuLa}=8xE7#KiCsTS6{XG`qPBvE|aV zdaY!^D#X?ywp#0mtwC(9iEsZF7_s#%-hkLf2AibD+ON%~ehXq-O}q^;@qfg&8-;5} zOqKv1$=!&3hu9v(#Lp4iOYS50lLyFy;wbxe+DN>`4eCU z;{S-9CeM&($#2MS6?G+>-;+Ne_9J4K82?0`BhQl;5WA=XdC6JvGh%;Gzl_)w#I7>_ z1+iasflwyEB_Q_uEfKLl5&H`2#xEh> z2Jz;Iw?zD9#JLK@>HqOp5q~XLrIe~a0-$<}(#jN6j!5O2?*1KCkg zUTP(ZcSd|J;$0A*h~O?Ks~B;;^%01FXlh0xK1$+S_boMciup5`Mb0MYm;vV@z8&%T zh|}TYpCG<~1@!;;A{Dc_81W^D%X1+_(M}RyhWO`*FGqYGYgQn>67e;RS0PUSwi`dek6)8C_ok@3z3Bt&E_6L zLi`_zqU0lzvbORl5_OR%jzk3{9z)^@B*gz&R)Q>vL@5TP$uf#&*e4~HVat-`kf8Y| zo-#V00w)C(k*LO+N=Q^T*(y}3A|d9_*!X{XHoKn=QN741Ryb;oT0}-VipqXkeH3c3MA$*H5Z8`4CWy*ABlxXe8T1eMR{2tx7k-;V;wj%MlirL(Z#1@II zX>2q47f5W^u}UGa)9Aa9*sWqD_K?Q^6Z@nB~u5H5dTNwFnNSLN*+^Wz$GAY z!t&C@NhFjxpF-kWB)&2=U$gQw5@(EZ7Kv|k%q@Or^zV`Q!Nflz@e>ka`$(JD4-C?nhE>F@U5x+k;3d%L*Z>y)=wO z1j)PDB?|R-d5J6%aU@bmBq%0joZDw_8i~v;1qu3p@(xkdJd=0o6q0$6d=SaJNZv>N zZY1wvaIX}Y0g>bqkj#f9{r|SkB_NrfT?&u|t-VVYMzR!=MUZ?H$%pi4NIuM(qU0k; z786|`jbw3(kCBgyF7qsbWJw*%@ky4ZScZH8$?^=IM6#@|L9(0~?J1_7HhKjKWQ0mc zwnDNpl8uq9f@CcutD2f;*yULyt07qf$?95XubR3$3u+@-p8N!wHj*8XY;9`Vr~t{fWIH6=i*6nNj!1SxvJ+FCMVHDhNOsLt(;dm4)O(Qc zASwQDMtF~6FS57jw^MzQ?1$w0O!Y@{0E2<#pj%~Z4n}ea16djv3^n5qM{+%qYF3kw z9KqCwre-9PqmUd&aWpvw$+42P_HMkXoPgv+9jg?QlaZW(G7lglZt zKynR|D;ckntZc&i`!6Kd8s#(U>!d0BvH{5>R5l{H2}v8tq?8N&jnq9zUPIEu>~-=6lK&v-K=P*U zi{!sZ+DvTMb3oE*6j=h0%t6vEigjjskxWweA*uXdnS8+12dRh1u!u6BD4Q`dE~1Q? z(4#ROSiCBUJ#Ye2m5a zk$R8>nP2ht)>8#37DB49=u%t+sfYf5O;MyCVXBy^c@(MQR30-5mjJcDsgg)Nhg2z~ zsoUP0<@W?x0>HKg7|s)ZThb)?>q*xKKgMsJ1GTeCsUMN*kJRT#4M1uldksWt5QF!T`VgtXNDV`Z{-64Q`cOrA$$K%JiaxL-a_J+H z8jI8@tspg;Wn-i%y|^f(#Q%|+plhg4LTWKmlaZQ()D)zqv*06gDpJ#QB~n}htiwBl z*_q@la<&@ERLT;7)I6l-Gx!9lg$x$x8l)CUr8U$Nq*fxelm+7dNG+4B1k1@4(vKKv7;Y!$U}YN%1gJM;IK{S)`63b=<@!%zREFbrz{pM(65~`kEb2 zlj8rTm@7hxOF-&7q`o)3%KszPuQ4rLX~oRv8pZ2K-OxHx{~&df;=i{lk+LIQ5Ge=JcOvCPDut8_ zsVGu8NClB{Bc(ngvXro+R|4zA@FNw-HBN{HVXYt)F=a8M#95FalRC>-Edd!*lSNAW zU-a}H5~zJo--R^oJ)MVoUZn3fHTNKWuZ~%HKMUypY5IR!b4$X<(nYC1qGyZrqewrFba9H0=^Bn%!qk_PK(e_H$>>F1EHFDd=CD%}w2rqmme&y$UjZXz|eK4s|_kbaS= zW}?eDFX;lLUq<>3q+g-9 zX&q@U4e5?ZE2Hj&ba!SulUnKRp!b4_P*h98RjiM@Sd;LVBc*k(MO@>CvR||MWOE z$CDFCE1jwWMEYZ-=OE3cAw7e|Gs#)fMYfg8|I>4k zo=0&$`3bo|QC>3sA}WiKUXAn;q?aR2|4)CaYmi=M4uY6J(kqR=N&*>SjZtI?K>9PJ z*NI}CZyS)_gY-sIvkB?Xk=};%W}|FDdaK0Nq5cBtok(w23exm{rOW4H7nR+*7q`0? z>ElT6qrM;M!$=>{S)>nAJS0t-;Sn~)|B*f>qNSgp@+Hz=GdM|}BEM2JQ#wuM40%@T zNPmm;1uEZ>-;+Ne{i77fhJGT?A$?vHYws>1{SVTYkiN<+{Xcyf=__phLjIbop8lWy z9qGTB`h)zFPWu|5xW>rUWt-kSU2wS!7D-UdWV2rVKJq=n;^4 zQUYr)%9)z-DnN!yK*n7E&s0R_8S0hD%48K}s;WR<>d0s0%RlvM$W%9R4YSv^kZHhd zZDi`0Y+Wk#ka^B1^-X<4WSSw<$mq`_)0o9gka+=_rdl_}vIKArFCp_LGR={Bjm0mM zuORd4|F3U>49#Em^bOP3eE-kL5`fHGq~-s}v_a+rWZELrm3lj5+B4`tb|gEIoyjhW zW_sO_=|!Q*l*W5}`OI7!L-I{}%GkrDr=K8c)+ z%oJp%GX6+X)=54s*9^G?WM&{UlV!&LGnW4&GZ&e~OmPXw%xBCcAhQ6Og=~udo57bL zvksZ1$gD!`JA429h z#lz$g@+f&sku@hIkePo;ogQi_Ar{k3S>xEA`9BTw(A_uHvf_%iMlL=J#CspGN-+nZH?Z%_!HAxnbge zB#`6quTgBs*pX2N?m&hnpK&7NGT9szAR|kFnVy%5ECI;)$w01bh)S4@kWrmQCXQ?& zDhXtg$STK9A$un>X(^D=GRS02{GTY^v+Gss6i zfNXwb%^8(NuF3)|FxUUHg^?{wr3kVQAzK{ThgFkGQDnJTWQ!T)(Oly^hV0|WmS$xM zWJ{WwQWB`+oGruD6D0lL(#s)R9oh28R%YrcWS?eGL6Jd4WGm@dZw}ci$cq0X`;4i1 z7TIdIYLKmgY&~Ranrtm(YqQ??f3~g}>N!(Wp9Kw&ZD^E663EOOWZNOzj2&M>wiU9?k!^vjm_Nl=$XChNM6}+)*O3+TNA^w9@_%lN=AWhc zOF?U7+pwmsbiX}9dx{;9?Z}{$&LZ0x*)AsTDuK+uJF@1U= z&H6dI0NHuSZbWuIva6B(1lgs`E+7{oyGY99SS==(uZo*E250^8M%&JkL(7~tz)~<;50cN0B{->~URri^$UdvnN?|iu?-MuNj<{GHc|s z_%9E#-yrKp_FH7HBl{h)7m)p4*C6`?vOludPewV%=6N&oi^%?t|D)eu9vp&0@a#WTJ^ivjXHT8#TeqsKXZPKj z-M4v6(qS>_9Syx3O?pqA(Q3ySrut)}N#jaK9&)Y^6twz3>7!`U$0iz0s{R!~G-i?wQqDjA7WMVYw59|MF?tZmGIRgGs$Ljy2|Ds8g6zN61derL^|6apXkn{FhQE&FB z*N%EqM?EL%!C=jHc_i1sh16K6fD$squwCF zrN|UfZ%XS|`XBYC(a^MNr&Bw9)SEf#iTFo79SS|sf4jTrf7Fvfqt0yNlZ6{FfT*`{)LTS2)kzmqaIhc} zt-k-G{*r2C1Vp{1quw&5qrQ#+xx&j^q#OY&T7RXex3cwDF}rBiYEf_XsCRtSTO;ai z7xmVRdK*SP760DaN?6BctsC{$v;O)T+Mut_Mp19$sJBJb+r)AWPv^y$hq>MN#ik^)HTkmk6`!_OhsV zMbx{z54qBWN*ndARy$m+=zr9^wzTq)lU^V7?u>dj7$oY+TY#u{Q`EaT>fILgZn5~S zhOg1vquw0`x0m8B#Z~`%_e8yWb$MUZdqAE0Ep5a=R@8ea>b)EFRQ!97M7@`l`DoO8 zEb2WM^&XFUPenZ)0n*Qtk|^Ci9rZ>=y=TnQREv5t0yL^O|GgKY-b*DC^b<7^>p~O0)&JgGx>Wt|iT>N%(NXVX4UJLzp4zc$$3?yOquz(=e^6TO z=Ob|{|C6ZqP1O6;AW?68)cY*zeHryWx5yV}mvR~PzEbhe2TN_0Zh6Y*F7 z2XTb+6V1h<-p|zcih93L`#b9WN^Re$_ZzkOqTcV+yr?&kTB&cM|55KxwSPsu|I{h@ z|41nbRe%3M{Yh$j)Kvdx3Gy5=m@I@AhkzU2heLTU-MNNK2z zO|(p*Ci<^nMlJ8dyVPc+Hi+6Z8l8gLlY| zvrwCz+N_qT`mb_LO-2B<>hmA<=cYD~WzH*(bUQz_jj1g_ZAEGeQX8yH(SK?SQ&asH zU*-Ze83CHLIJIS{Eg?(6m!u}*ul~~FR6Q(9Z8?iCPi=+1&`Q+SrM5D)H8g7#wX0HF zO`X*Tn7Uk(+FF9hUTdpeXJGDATaViMHoAdEH>9?aL2M_RP}`K+RvH~bZ8OW?oZ1!& zR{F1}+nU-Q)V86v6SZwMx*fG0sBJG4c}`+%>ZJ=N|- zP4u7IJ`&Y})b^wH0JZ(8-9+sGYNt>;klHcS4x)AhwSx_l+9A}+#KWi^Y7$FJ?eGC# zmqV$^fKdM^wbl1OsU2(aPk z8=J3Z6?%Mv1-n7f`!|+J!cH5w(l^qL*sQWoj=sobtj_yOP?q)UHxo z^q<;r6Qw5q3rI!e=AYX2YAgMxc4OaJZl-n%wY#X@YIAQ>^6hHxpmwLhZ9&n0YWJwU zm)d>m+&{pfHiFtm)E=bv619h@J)wk$)jmS)QFR_Od}@!2BR^$NQhS!#Qx<=kn&>~Z zkp{85Kc}FK0BSF&ebI(SQG1=*%Z5+w6^*`1?KOkwE^km9OYKc+?@|-}SB{JTYVX)O zqb)v$nuxzVq{DGadta@HKeZ1fR7F3g_ARwf6c_!cHlEs->U^g5bG4K8pW0W7d`->1 z1(2-osFh+qK|`Yd)PA7$GqoQ}Uzb1GK7Y~WuLie2Xum5sQLT&sYBB<-{Z(2$#XrH&4A>uawr`d@Wh zuk@dKVnFH{^~I>?)MuhzP@jr=SBnf%JB83>7a0Mz$kf!Qp*}rz)&Kf*hNE4H{!^c^ z51E8r9PWFvkPb7XSqHn^|=(ETW}3gpO^YV)aO%tezglwU(iHtGYiX7 zHeH0eh<_CoWU%6kt6hTnk|s)hDe6lbUwdAb`sT`6j{5S{H&lNG>MK$gF{i!~^_8iw zPJI4OMQt?#sH^@9 zz6W&?f1A5Ejbo_qL;X4G`%=Gz`hL_;rM^G)@$tsbpNx#O|w9M=~*L6H;H4ij9uJxT4!)K3wlDsme2bE%(hIcHE8 z{a5B$)MY5Be~#g+e;)Po)w#e%FQk5vA{QH^BvZeX`Zd&5|Ld1q<`vYhw7!mj`qk8j z3sUuSE%gV=CH3p5Ur$~2ynX}q8>!!-_)ThWHYwDt{?|qSb>BOv-$PyWpZZ+_igR~g z|Mx0#A9dCLYTpqGK1ls3>JL$WjQYbi_YvxkieE7wx46!T`jaL^{b`Hq2&j*w{%l{? z^VGkh{sQ&aslQm_)L*jvQM!~7K>Zc!uUfqN`#;p*p#G6Y-=zK)^|9)|P5m8p-laZ9 zozbPWO}^K6-f`65myp!g5m2xG{xkKD75qf4>VJK_`kzt%LY>e1>U?R7e@$a{>fccR zi~6@p`;Pi=)F)8?iTd}7{Ge9#zq)QeEAmTe)%n#{`(2k4E&hitMgL0z^}lJ9;`tAa znEJmon$-WJQB%$&>ODh~Wkbck(da{3G<+Iu8XgUYhA6*mYWiu2_#1>qKqI0d`fm}8 zQ(77cjVWlPGzwj2G;)cWYC`DJ81(vh#u7A^rLiQ9r4?DqR$J!(naj~wp2i9SPQI!u(O8Sd$~0D|v5Kaz zs&=)CCatca$eMk~+B7z%u?~$5XsoNz^=PbL5vu1)2Th~W|8hqfn+QP)Zc1Z_@fF{k z#-22`ps^#3Eop44oULeB{cni=D|0&yZEtdE>>vlJYVJg1XBxXHVHX;e_}l32idTRC zlg3^&_E)4F0sE-4uVwBhj&yqfjl*ahNJ9m`aS)AzO~^9KgB&`5&^Vlis67oC0W^l1 z5RIdBd9*C6%E!_yUxCNbc$>!YG#;mM0*%XPsQx#G(KwZcihtu|%{`?r_cR*k(>R^R zSsFTn#+iN5vuT{Gc%}a|&g+X_K;vQ>7aD}dMSWNA5*nBGF)yca3ymviTtnkZ%fG60 zXk4v!xXGn)tuC*laicodtG&TSMf?@HSsb~lx6*h(k=tn8PUBu0chI<-#+@|oGMv7y z?y*_-X-f6skJcGM;}HcPRQnK(O8@QFG6HDG{{mi}CuqDv<4N_OqVXIJ(SI7xsIBh* zX*_HB&ny0d+81f4<~MW%R0XTQ|4-x9lB2ZO)V{9v4YhBoeXF$E^E)(4)q0o4S2RY` zPyug@q46G#4{6AlQ2sa?@6-6ebYgN9|48k}G(HhfYbr9HhTQzC|2YjA1nPe&j$HFn z|4TvshQ`k{RR0^_(fEPJ1f_j%Xkz7p{HWI6|2KZ2F;S6UY5bPTbsbdy8-LRH zi-!H?XBGOFW+~?XY1Sl~4H`X~D*Me^bvnar>ivJSHBeSknhs5urccw;W#|7>0-AmL z-&FmVte9q^{8Xw5lF_X6pJq|D-5f-7UX4ycb4r>s(6svBoSNn|8k*Ktn2zT3#xK)p z&Pa21nmQVqD*nw`ls~Il)qg#gF6W>*r^%%`7tOg9oJWxA?DN^^{2E$7?SeEHQfFZs zT|}2M3$%y9wDzO9IL%Qsm!NqN%_V8BqnxGGE=_Y8nyb-VR+r1sT#4rLk}lUorU1zqOJP@2an=P;Uw z(^RQ%s{S{J(v)#vbB|WqF$SS|tZn{ynkw?m6KI~OoMCEDGE6LR4ns*C9 znD?l?SC(?p`)NL`$OAM-2q+xY|K>xs+ea*}`rmwv=HoP<7-&gTp0b>$b@>dGyu|knO6Cu_X@4~X}(Hp8k(=s{E_DCG(VvE2F)=v-xR)d z_!iB#X}(MIoq-C9kG4I(r^~St75+Gy?;F1)(EO0*moz`3IbNe5)2#HL=BGldehfdO z`MJrWS$+OP^DCO)Y1Y?jzft>bbu`&)f+8{kX#P-I-SH<{<-R}D{Ey}@G$(5GSG76< zn$`FJY5qa;Z<>1ZFBPhP|3&j3DJ4kt`9IA`w3;+~72c}Rs?%!7vh3d+q1B@0N>;0_ zw)*}LEss_u{6S+3$5vtU+F)s8FV=#t(k1r%;Hqd%t}l2pVsWORO(xE=yFcAa~USBdBhRgytGvR zHC>Sf)GnxYAzD`dTZ<^NsM^KU4lb>pZV6f|(pplMQgbOtI@^(Ng_ym5E2wI#d%6qcxP);kM2ZeS66Wpmmf%XdOfA1VxUeb)4lNZ=)yDI$5K` z)anSRF3~B9oGK~O;pw!_Rpbn{XVOyfZ>jjV&JkM0JWmPd(^9E#U7*VgXTyhQ6uTBB&at;=!*yrNF2 z|8J=Cn%e5`f6}u0-+HUW^%U>W`jFPUw8qjJEuge9M(ulsqy9KrqW`o$5U|Sqh}L*o z9~*?0i~w4F`rrCYk*LHodltoKq&<^5D*ja`vnn#1@a34Z+f&R*ds*6Z(O#7H+_V>< zE&5M;Udx=1_Wa_TANKZw8eK^3!j@Bg{-dDke|s?P#c404$P#LoG!@ien)WiKV{0x) zdrjKQ(_TfRE6`q1qSD4nYFF;dT~(3Q)UK{}jndjuYtdd?mXf=US{VVf*AuWh!Ul?L zsCFZ@8`G9?p#G+6htS^4AY~TqEok3MdrR6E(%y>pA+)!qy)W%;Xz!$ac?&>$JGI-> z-ofP3mJy&8cBZ`t?OiOst1@>}Tj@V-5r0MYqP@5E_pxp7XOaDta{%oFEpm_|2g_2r zEju}0kwa-8M*Aq*R{z^aC_a?7h`+5Y_y39?qxM*})%SmBpFsO;+9%Q$g{M7C?Mbvx zE*Jy3g)Xaq1wi|1iw{@)8rs*=zJd02y1d>*wf>E?Z>D{dAli}=Zt3%HqkX%A zcbF{NchVO9r+v3YbOcDZ_tAbyL-(tFfc6O5kEyTv-xmF+t<$0Xi29F~Ryz^>r~L%& z=V(7k`x)9#De|--h!w&}+Rqx_G)Y@V0PPoOi~jd@K8p6swBOR`D{5b*E#j~K>uTRn zJNfTF(AKHZeuwtEmN{BEs{ifk^MBgo;_0WM{XS#MSNI1kR=%!2BzuhZNBHy8{+P~^ zv_GN!Iqgr=ksr|>ulBRjrmudIzFms*7r4jJ{u1XY+F#*pMEh%;Qn5gN391kbP>6A+xA16{LzzKz*d>o9Up#*12 zoD`?fWu`Va+o|8h8HA(aZ*COLy{j`7&eS;5Do6CcOu?BBXZnF$MP|fV1ZO6kIh83R z0B07QS#f4pUq^tsZq6LG&RjV2!qL-kUkg;Z%S5$0An$9npWyT?JM=kF!@_ z`aU=%vajO%sofvvAe;kms=xef$T$b%95Rro^$%74VFF6o!*Px+&%$A13rylRST%Ik)Y^M>vAEu7IBQvG+{QC~-ZT*EOq;}m&M z?by=lwS6DwL!1v}sfb3afB%c~3C_2Qe2Oz3rxf|maK2Ea`u#7?mwky}i!Ueo#&-1` z&M!CE(#}aC7 z>Q$%WFFo`s#H|a>ZQ!*B66P!o4O@vAx;;BJb$A@0Vw8})HE>EjGBKCbA0*(&Z9 zrGvXA?l!nv*{F;Fdys9dvpw#CxI5tPjk_c6?zlVQ?xN{C8$Rx?xVsJH+QdC@_r%@H zEG=^%P23lEf86~BQg9FG^AEy3LTLx%9)f!qZrSRgRULD+rTN3{Mnff6kRx%A!WHo! zAmbj3S6JrVbO++nz9;huzhI_}B1r{bP6IbCX=W|p{T=oV)V zL~+knM8|=9F79~)n+ivAFTlMJ_fp)8a4$BAxR)45376qsfouQxr#vrLN>uyDy&Csc z+~K%4D)}1RYjIWoU3m*&kAH*Z-=wsg)!rgtRp&NEZpXa~_YQ;O%0wtD;Hvmbw=xS9 zxexb6-1~8#zIN7oyTxh{L3e(5{)NuN8&zZ__*>G0QVVL z%D&H9{5jm`abGZ5Huojm@wlUK-@$zu_f6baa9_iH)nsXf*KsT5H#JL(`<7bKf91T3 z`vLA~+_AW0a7FnCHo_f;`+l{o_#fhajQf$$D&!N~PyavbGu-cRKga#5#Bsk+Ta5r* z(SO`;a3_EAuboW5{So(jDJ2AZ|L^`}5gh??Wq!q*8TU859QSuT4|gJN5BCq;e{uiB z{aY*iC5hFg{-@8^iQrDELS7B8C48@r*T7TpA9#+uwuT%$5r0WB1-%Ylq#>CCc!Ao` zaPYuO@nQuN1Bw-9W|nvbp6a~U#T$e-72Xt|cJ< zE3BN!|NaY4XPLLU;%i6|ImKFd8{(~vw;rDAzf@j#pdUP)5#9!tzY*T1cpJ-7m^uQa z&JbOy_*a#;z9q{b^zqh@;COc}KolJf0a2LGY z72H+rZW59m_rTj5Z%@4c(|_gI&wsrA@X99l$2&-I83A|)+6o7YBgi3k_e1f9;vI%} zxZ!A2CWX8*+rQY`FI1=jA=;-}_r$MJpr%9(Z(4jcybRCyYM#rNQXjX@g zh`)`7bYeOY9V)QOO6a5mw319Gr!z<^6l&%EUvbfYIx7AZGBuqA=}bdsHagSNnUT(P zbVT{>rZZS)COWfd`pg!YwU0JCoq6cYL1!-AXimdX{@jK}XI?t<)9Dlc&H@suI$4O$ zVssWZ2%SafENVifr8C&#i|cX;+rv`$W#>!NIhoEfbe5;HES=@jQO#`8)3e2|$QFBn z&I)vPrL!WPEj4!~IxEvzkIpJ|)}XVhf-3%<)n%6l|5HRi|LLqnXB|3g_u=dI`Rmge zLT3Xy8`IfPaA|cTQ$hVr=xjQ`S7b9fn+qb$E$m)f>2hm2JJ8w2Mz>W^MgX1d1$^*7 zI;#JjO8@EXOlKDpQrd2G4pe7%I(w+IC!KxO*^AEJrKA2n;#9}nkIw!UKfvI04x)3U zGGzqNIfPDWMf2$#O6M>`)1`{P;6rUe(SJHe(>b2bF~XGPv2>0TzuNQ!i=Rkm7@d;_ zLVCti=zK!wR62LjIgQS_TH$m$XQ*?g%{_~b-2W?hjyQ6C&ZBb!o%88jLFWQGmuU1t zIv1&Pv7w2Tt}a!3ncB;3Z&%W}hR#(AUR_#shTEvnh?~RJwMCUd-D*he0 z|EHt+uf6H=b~<;cqc{Im&v(;#lFmJJ9;PFMKnXGe=-f}|0Xh$=Kf?5&{zIj;Ej>c# zQCSLKrU0GC)yfFa-kzc}j?U9`-k|dgotNm0r1LzTXO*TSU~)Ab0i73Z@lkYMRhmoz zIz4VZF5jXvhR)k`-lg-7AuB#w{HmY#j8A8*$yI`k06HJ2{ZQ>kbVUDc z{ZH{r@f=U*8#z9250x_@e&?!EfSc_$_>q zcl@?m2j4Xud{2>%NmoC>4{bEU2S34&4N}tZ(*a-kIevjZmHJ)$K_-eng(6eRQnIGT zpB{f28=V$^Iulab4EQsvGb8>?hGS1Oi{d&0MwQ2z9e-~8IntMR!JiX9gnJFN(hy{s#Di z@mIoM9Dh0dCGeNVU()o0zmzy;6#C2HFI)9lApROcf{Wbe;4(47LMMI;_o_88GmhQB}lL0atqd>J3|kR1=kFSk2n08!4NHhMVz(fCK;ABjKo z|2aolj@5tvSc@Ewe=7b7_$T3?Sc3S&Oi2Bc#TU@t|NE!mpM`(Af@k2LDTK)FTlSB|3duB@GsKP#cD6Xztr4$+Dmsi{#E!_X!J@+*In>M|M7>L zrNQy9#lH?;1>e733HJN{{!Nx6BS5d=t@w}N--iDH{_RS>1OIMy?!>>#&~$kZ{(bnW z|N49>X#WX-v@t@F2k}Mx@gFX&eP$oUe@a2sfB$iO6@Q`WTL5vM#(z#Z&)|=gTmhdI zr+RrjkN<+j2rKZ;;B{Fm{6#eW6=bNpBF$Kt<+|1SRP_-|>QH}FOOO_m~WP{sfbSFZ!>!qW}0h6nxcx|CcI7@ZSi^`o9yD>OB$vU;ICm|0ljq z1Yh-EdiY1Ow5AeDT@~@i?+xGtbpnr|LC}^^&{W$JLRlejbm^LWl~i6C#KR zGQ}Yf{U=ByB#w>%sg@I{@&^S$mtYEw4k|ZNN5#L|cWQze38o>Ko?u!675|b}F=sH9 zwZoYRRPzIS{~yfS7oDA8BZ4^yRwkH}U{Qj(2o@xmn_xbIc?^?aUU7_G1@o6a!2))# zg)C=bf<=t4`z}VXEWuzUFHW!&!4d>2{@SE+mL^z6Qf%i+UXEaS0{hL+U_}D^`Hx}B z?yC^2O0XWmY6NQ%tZw!tSi@8!Sc_mCg0-vSlA_{YT|E(hf(_JeD4Yu4m|!o0O$c@* z*py%kB@9u!8Nud;rpqk}wozv*wOiY(u`R*&ifmU}3+^CJscgYc1iNW;X967r!LEI@ z-8H28AM7c3)z#hvM-c2ouphy`ef<3i4kkE2vkoMXSzvZ7Ex{oKhiYh`jl&2IuQ=7~ zWGKP$1V<7aL!ja>m*r@~AyDxbr274@Ry%>Iz&;pm+PhC3>_=?OvA? zi0l){2(U%2veDrLHxOK-1ik+ct|PeK&@AUhf?Jeu6M>3w^@$pzb$?z!F>dx z{{(ldy+`f;>wj=R!2<*jYG_1hwQbe^;9;}W(4z!T6Nvch@^OMEtp6l|j0U^!GXyUa zj3f}LCwP`XheGhY;cI;ne}b0`LNH1kc_q9;@CL!F7JrT4b>nOF&C(~3aiGrIcE@)K zdIX~hCJ>Av_?+N9f{zKt5~$h-;|SiDtm?J&p{-E;{#UDgLhz|N;|V@9Ow0d5@h=I! zQRgdyuS-WBRl#owzUy0lPw)$YjEwR@@T1zF2!1w5nMLp`!CwTwY3O$XmHl9%5UQG! z|Na}n-vs{<{73Nb06`OF1W2{8MmQB=ozN$25ITe+{=x}cgfb2cQxTWYGYFymR{&u^ zm=TtxV&z1H45TO`BY-e9AYo28NRdKqw`x0-L7>Q#7MYrG7Q$%=Md}HsRXd&9=`CkQ zT~_!1gjWB=MqP1&TZ?=OSll>e1r=qF8Xgn3->SWy0kN<+h*DPJwVG!_*E} z(a@@d)t$eD)m4U=#!Le>8&x-Q{HgzFJ*K)C)uH7#Yo{}XO(b2qX53?bZx za5JTe{u6FNxE0}+!qgX)f>!^-ZFRXF;m(BH6Yi+X9SoUpCvj{d;Vy)I`XBC2cr4)_ zga>HWo`ic5ir^FOO}NiMq9XgL-QR$O2NDh?Jc#fx!h;FR6utj9FZ=M&|Id{vK-l;F z|L{mc(SO3D36H7BRqke2=5_0m+%(C^9ZjbJfHAlEph>&4ubF^Ay2-}mk?e`c)4;e6WrXBgjd*_R}tPo zcr~F4emGp2*O(%N*Xi5cGS z!gmPoBYc+de!@oyA0T{)aD*-Rpmjw52_KPV)x%?iPb&C0VWt0NS;D6XpHcj2!&HBy z-SIiXHwd36e3|eC!j}kN6k1iY5`Rs3h43}PO8>R;>jO+B=m-d91Q1&N58oyHlyEfR zIK{`PeUET#>ByscdAv{f0pZ7l9}<34;Z^990b1!0jwk$#@N2@)3BM#1{kKKF5`Xei zCqk&d1uj2K2q!?PKi?B=NcaQckLhz0^b|i4O-J}MQIqf&!bya`68@!o{YLmZ;UDTx zl*-lXI_kSbo?*&s zJMxM2racM-ET7FNGLDjCqCrFnQLf9BNZuNl`ic}pT|uhcDTt;fn$jRdQyILpMAHz7 z_{&4~ot|iMq8W(hB$|;(ZuN;~BAVH7h-RrSMKqg+MEup6!=7#~qWKh=n`j;zo!3U^ zCt8GP0iuPJ)2IJY_4{AN7bRMZXt1Q4A6~fvOAswjw4@T2B3hP6^q*)Mp;;!;a>gfG zfoM&l6^T|=+Db$#6N&iC5zG@BtwyxE<*#8JC9g%aE>WfbMC;i8*CX0M3F{9urpt|p zMi6aGbOO;PL?X*Xn-UEn+Ky;5A`yHd9RZR3{%5om(Y8ce6KzvQr6qet;;R1@^H4<&6J~`Rp~z68V~LI=I$D?Z-+x7R1W5hkOcv4cHuprLtB8gXolA5Q z(V0Xi6P-qMie>5ukPc6`$QdTLv_zu+L}#l#$KXWg5nZIn`9ym2FB};GdeV!DE+e`` zmV#eu&#QwVx`OCR!?gUXiEbtuP9#!KbdB0;)mGpCRR0FGIs&4bY|UGU?j^dF=uV>B zlyEyy_03PiQSdIJyNT{8eF4q$E_>ZabiWcFkWkhCgGA;30_q{6u|y9Oy-f57(MY04 ziJl;O%+emWJv>SDv=({FBG2?ydzR=WqUVU7x6v1fRQ&DBkEl=oqgRODC3=7rM4y*V-xd3k=qsYHE3m5nEzwWP|Bh$^(GTi>Z#YChR%E&0rT+gx^b67N zM86XKR#l$-j7+pw=})46i2kDdp9I?rC3ULj=s%c_^6&Lis&Nm>PwH#Pzt<}Nf?E?B zlXs*wISU8M@ASBRh>U}3M*`$O9R&30Ke6FMVwo8XDnZDhuu&ZWrtO(1(@)}*PdUj;r z6@*qbxe~10m$j<#VKtBu0BiJ-*Md!9ZP*aj(dfFczB=pm)!)Dt-$+CD{+~@uDHsA< z!e$y(@n;JOX;-inYzJFwbQ{=qpmOQJ_KNQSJ63pgke%T;*aZ%PU13kyO_{r^-J`Vf zkP3Uj{;)Uf3;PVq|;?G%d9-J)%37rGy8sF}FzTy|a zg>aFC%8OQAw@Y9YTncx?WpEQ*4%fjIFdSqAz*TUy;oB?`e+`NLTkv`i@mE~*zr^8Y zUETt>tD|oLxXq^Aq2Qfxm*E==_rNo7FFXqO!9#FAj8L+U0IB?-kgHuDHaSrZib-XLJV|A`C;4gIY47x>j6y4UZ-r2# zmkX&~SnVPb66Rv!2zjvD#fe4y#urf(uPXfSz|p;$0NkiFjudReV?C z-E4*32XJNXsdg{oy@~fze;>8`8ov7bt3AM0IEeUU;)98gCq9JuXyUSmBb0L}@nOVP z{Hvaa607)E%Rc>&k0Gw~pZK`4f_8g?mO4@GFahO^C)wRkA-A0KJi5gUZD2EzO0KCxumq($z{aX5?@Yy74a1UN+(y^POjGF zaN=vK3RV58;C3Aw>57zj##Ot`X9?%0NwEpvWJN8B;ADgE|TMj?P&K#E+P=>OV$2lK64rr-&>4C$_);jaB?5 z2tFE9JMy%Ub`HKF({zpAf%JJcjrU;&+JOB!0_YHxYlk zi;jbMbYJd!#P1W2H3;!IapY(D1LBW}KQznI6081K*ZfmrRrq*3@n^(e5Pxne$fnBC zl&^?&9K_!ctN7a}@dT0v@%O}k5&uA33j2@5zi8G^#3KIkkWNJZiGLeFbUBgu4|V<& zyz1(2;z2ocTbroNmMD)L}&Uz&4lc@OHPi#mwBH4jtW0I{&HX+%ZWK&Ha zBDr!UHybEIvV|f#0+OxzDsMxg`k#pYlT_lb{*ELEknBXVC&|tvdc&XSL`Zful}SYZ zN%k;H_4gv#SDn2{_UXfA94NlO*`4G-lA$CAk(3n)0MWE?2+tL@}>i%cZ>gXGVFtkNO*o3x?) ze@Ol%F>3!Gi427SCaLOwYV|)Y|9ofp(SM87BUSxR%RlH)DZfc1Ex+Y2norty|DT37 zT7JBglE!vvKmSQH(&{fikQSs}L$I_dNC%TnNjf{}RHQSLPE9%k=`^I%kxnZ#^R^U0)eivE+%CNyP|&Oxd-_UW9YbCJ%YglYx(%7GIonHPR(WmmytJi!Y^iX(?Ovuq^2c3NA;wd>_6d=_;fv zk*-`-u6kItkFz@I2Bd3{u1%^#AzjOq)q?AguBVPn1SukyVtwP2ZYYkNVk5O1TYOWp z^64HzdOzuAq?eFxPI@Bg7Nq-=Zb`Ze=~krMlWtAAE$KFQf-n zo%@)(lI}&i8|faTqW_Xu^|Pm0lI~5qFRAK(87eg@t@K~_I)L=#DCv=ABV8U%dK~F7q{miZ#Xp|(g#Sl|k)BU_66x8bCzGB* zdJ5@jq$>XQAf%_8eM!&M`e#)|q*W1rQn~*pJ+BX!L7?D;YA;fIv4HZ#T}oQsgkMH_ zE9vE=HWlu9-b{LnfSRSqZKOI5 z(mVbizl-#4CETO-UK1s~PaJuU9v~e{I)d~`(g$tyA<~CQRqfM9NM#(zL(cVh>5x8Q zmg+x6`U>gOq%V>_L;9S8Bh`xjYnJN2B)%Ys>}&Nu9i_~d?bUdd^i9&&geLsgN#78^ zdVb#`9ZmW+>AR%w7>t6GyJ0j)SZwU{kwAd|@~s4im`_4zSbB1?^uWyUAV$qKUSn?E)>1(}FEnY;xc zn~H2|vT00oz>-a;(do%%5U{E|6WKy!Gn36uHj5HO|JBhEP(CBs9Axv7%}F-5;&TZ> za2W))`T58e(CGX&x?o>)VX|e&79m?)Ig64lMmD&5zRasATY^kwKU>n)oUH$vwJh0k zQd7>jyg1Usiewv;twgpq*~(+hMzWj8ZZ`Yc-ESo;Kk&KDxP3$nGJ#S7=6>s*8L-*#kCr1X-p3!g;;?d3>1c5p^CdZPs}>eX)Fn zKhBipE8z*USIC|udp28Q4B1m;Ppk6`*~s+YH?rk+%w`*{$a7>bl8OG4srWzfe)>Y0 z{*of2$X=EP?z}P`xpMmH3uLd-eUR)miUY}BCof+EZ;+ST^(J|f>@Bii$=)XWnCu<0 z_sHJ0{f{OS{jUxv+l?g~M^^s9xA)0Ds6y4jKQdW*tv(_9n(R}u&&gy2kbTw{{etW( zG8KPQysGdG*$-sjlBw)x-WD`q=><_h* z-vyBUP4*AjB(i@kQ}th-rlfIs&BH zOyuj6&rH4``7GpfYE(u5x#&On?BsKljy%i-%;zGXn|waWn!VDjC_ z_afh2IeVzBZvNHZoBROseaJ=j$z=rCGghDfD1M+?tN-~SUfqVk_iR6!y4&Ez+d-!#B19r9ZSa>;KazmNQO^1I3J(5ySj z|Nrx!{2s+8j{x%f$sZ(tK{scP#HV^T&i)_4Wk$Sn?;yN0L8f zD?Cm9jPbR@XUShBe~$bm^5@A_{H6032RNleK8pNh@>i<8s`{^yzfE51e<}NK2w!pK zzh#!>?~sonf0ul8f39-gGYI)O@~_C>C;yE61M*MEKP3N{e6s%AYM)wXeBWN5lYb$& z^r<62`u|#&-&p)x@=E;6MDp(`N|E`2A}0Tl{6F%a$p0e$nS3JoFXX>zdi557T=l;? zwTgfKr>U&f{;*%&kl;=#$t{EgkmnOIkyy-K1Kg2=A#hJ zr@dx&Jo=iq$FXhyPX2Yf-FEu{MQjej)m=XIZZ=YXjp`Y-pn! zQ|wBy3B@)Pn^J6E;uJ$DHZup*3R_TYMNx^r61Fz!>TgT2gF4$$Y~P3PNU<|Tb@MN{ zRNlo9D0ZXRk79RR9rxDA;l#W7fDEZxY%$gF4g5_ zW~u%a6t_`aNpT~^RTS4MC?kMkIK?%>)U7G5Q&9E4xM2WS@Ft3z4MHI!fZ|r$?d=qg zQQSdspW=5?+(n_XU)(Jz)xqzz&ixb*Q#?TNAjOD2!b1bT)_H{D(f>ytr+7jT+5Jh1 zO8?8U6wgq+MKMxC&r-am&T|ycQ@o_UOaY1)Z4aX;UQy&_`vd-Jxs*rs^Zq);8%lUn z!0HHZQ`P?n`ub(zgy|QB7^8oL3c{apUOBI znuhLd>P$;_I=VB{ou2NDbSLY-ZatIDokhvBnx*=)(-obkI|to4)e-TRhx9xT-TCRx zYY@8g*~=n>pnT9>&>{=dU5V}@beEvJsEsa0cd*hH7o@tROVSmQr@Iv0rPW!6ZuOhr z>NV3{UUAWXx+|7e9_4e_U77B>bXQS)Rk~}?l{W>tT;0}RlkVDzRQLaM*AY&&`+9UY zqPxBlHc+eLZ(e@gjfE+jZlZQmS;}?TjP8kaH>bNJ-7V;DtI;j#Zl#XuzhvoKfNG=d z=!*W+-9d^}b#|hAAl;qm?nQSOy1Of3SGBuY&K}}OqK*LBeQ&z^DY6gU$s>U7{+4-w zIKnLT{|LGV(>+xAhtSonHLA#AbVdIye<wUZiS7k-Po{e|-BakELHAU;r`fBm`d{%?|K(g~nL2dO5l4`7>7GaT{HlI+mJ8`# zqS1@!UTm0p#!Km5q4;HVFCR#udnMiKlYhJWaJo0sy++B`(!GJM>VH@Czc2AdCER2X zy0_51kM6B>@1%R1hHj^ON5!wsau?lu=-yp{)hVjC0CexytOwMN5KeWXhnQkYx(_qx z7`l%zsQl4;lfD@@Gaf{QFRvZ zQdQpaT zpY_>i?X~wg_s+bv=goUOeq_)$4El~i(~Y!~eCxB{d*%m!+Mgtt!JuCh#QzF_LBBes zPW3y%f(-hDV0H%m$sqH22K^=cn?dsb`1$?U$Y2(N_$R+w#v_2BAHe{EISA$!KPSOl zQ4pUbn1`T0ftkN&=Ie>&|H1qO3-pi!y>cOf41t+H!61SpL7+Hc;+YLo1nEA8AWKk^ zEJqL$6bR)1?plIkpHdo)fWSroLHu0+L7iX?f(F5I1Wkg)2{aUfHo+oNc7(D2D_)df zu_*8-Uqa+yf~6GL2q5r3{|%Pbav6g7lmBQL6%s5@urk34%C2anRShLD|M#6&5xJ_* zuBN4p0CiZCV0(hK2sR;Dn_w8hIufkw_3ODlBG)I_fM6rVHUi>t6KDk3d4>~gK`??~ zB!QVf!Ddz--^tCb#K=(=n0`xwZ3w*o2U|N{nr#Wp|9$Ofg8c|~AlQRo48g7hI}+?n zVCL^+1U3$ON_HdIy=S>+6cg-4un&Qa1Alm#zcwP+pWq_m`I>;5M1DRf(r@c|FLEg!R6|6 zF~KDYE+x3kb#O=^{}0Un3H1IyerB&Bm`rdj!Hr5?C%j&GLwt*@#HIkj&B9vf>SDfiQwg)<*Nk05xhq5DZx~Nx21WV z;0*<_{}a6BN(iPAe5lkr1n&~OulPNeRs4ZJgAD>P9}7RRrQNa52)-sT^Cz%Dpx{e_ zuUst6Hw51kO!wJu3BK#e{y;E;;76ae5umD{qk!NSf?wSk91{FaqCY|8|NjvDDUF%G zg1-s==VEpEm&EMGCuSirYphAkWwas2x~iWl_yg|!?c3?fvJ@YxiJmr0~aj3SXCu^5Rgi6)60i3*9(>+>WE zBuXTTj`8JXAJ{hz>Rc1ng$vF+m&76@7L7ITYbUWdiM2>9L1IM`gGnq) zVhD+)q+im??T(rMi&>_p|8ioM7upE0cle2+B+T1MtVCjE604F}#Zu}c-v1VmY1RN@9I68wfWv(staK#HJ)R5$WImCr0>^&8*z|j1+Dj zyKZ6&5~q{clEhdNTannA#MUInkl04DZApwKu^ox+tvuQ&zE?Zga^`tHkl9wt28bs%vhiKARB{%C*xV@aG$Vmt{se`12N-v1LPXn7)u|N4L86l-Po@KoVx zwzS>PAaN~;Gf7M&aTW#M2}mCGiA_ z$6S9B@f0BOq-X5?zczY?#0w;zCGnhRo_AY&<%=XDHrfK<(^@;a=kHqIB-Y4-9i4TmotFRfNT|Or9DG8bX%#zQ1 z?H44zA@L=NuSv}Ge_uOYt-f_j#ov?ohr|ygej{Q2PvR#MzmS+gB7Wy@V*Bd;wWlib z|34-E!;vKZB4M^qLjMFzXVz)|H9^EDXCXPOg4p~O_am7kIS0vwNX|)eK9V*9NX|`i zUXo`1?z%+wkFPN~faC%s5jnqUqKEs~Avutw%-`L~r1`&O8Ue|GWFpo_uf1f7WQk;& zq**=549Tp5oN3|?c`*fJOjGPRPnl$eq})DfBY>p&edI*yExtxAO?cO|JQklc-=z5ge_p)ttBU??Z+xChNM1_vTBR-{dAaAW zAbF+8tAtkzuW?ydPVzdE*NeY_b@&O+|Nb(_-KkUjqKSiYd`!AA@k$l|qPmp}l#oFs> zk}pZ~49RD`#y%NJoBOjcD9#2W1j+%j7Gp~o|!7<^`2{dljK_@KOp(G*G!Y< z9pSqq-&63uW%VqO{Lo_S{E_fulAkE})bpQtC;27GA0+sSpGeM7@Ux|C-(Q5klKjn>nXipM#Q#b1FH({0Z!P;?Isa(+uVHGIc#D+% z@+Ya;h5aH_Fo$qXubG?FmZat()gd*nQvFFSOv>J8YB@lNaDL$e(VugO0>ulGTF7E| zQK>xQoc2tHRJN~5sgP9OXA5GA!je#b|0mv}DyBxN9tDaU!X~Mf zg0|!Rk-DT7A+;u{MM(`MwHT?TC0ks$1gXJJPilymC51~F8Sl6ZsbxhjXQbWIpJ z;}xAu{7S-=g{zQS)oWHGwYtbP921q0T1(8@q&8Hrj&NP!dZdO$f#UT^ZQx>mo{dOt zOlmVyn@BL+D@Typ)Z)I^Oll-4z4^B@k0P~2UmsFik&3KxYf=Z2+D3i0CAAl+?MUrR zYI`xGg*&(^Qe#N%=;NI%i0{uXlI==rHwC*3_Ym$GVb6K?7P$|peHH9ySv%YQ!m*?d zFeYw$kjR6LG0h>Q4plJDGl!8nT+9)|BaNSV?MIV3M*OkD@xlp0@BbT%S6VhsT}|pn zQr8$`%4>z!39lF4;FUL#x{cJ$B5x7i8li&87Q_v2Cv}I&JB4>yN?B6(kothsy`-KY zbswpRCAeSsfbc<551BaDKSJsWQd5+ARQMRF$K6JLyC=mzC44$Ud)QaRv!vc6^&F{} zlzLwHg78JJd70F!q+YRQT=g2M*GWxv%Lqxm(UX0P)VrkKb_}U$61-!}_}bqS^S)z9 zeMstCQXi4}lGMjaeIopn)aRr=Gg-Xv7cNltE60=in$$Nwp6&#sz9aQFsqab6AoYXK z{ul+Me)7lonbaSoej)W6sb8JOr+)XrpDOw5zghQc`G?fMjwdbukD8}vBV8apJL!c; z_ai;P%F}a@o>ReGq~}#IH|cq-*4>bFf06SUR zgQN+(CZT1LbgD<05t$X{98WqVowqnXLy`2-q)Vh5l9h!O(p9gok*@dXo1~W@-6Fk+ zlx@--1>HW4mWv7(6E5DDB0X5l5aE)-rCgTuGNe}{y)5aWq?c1_dEp8su=}~91@W<0 zBE7Q6ReW|;mlC-;=`~0XBfTc+bx5xza&4#d9o7}OUQgBfVm1(N=w%y|ex39tq^~4B zob(Z-N08o~^robDAiWvsZAp(Ly%p)rNpGQA{r@j^;4P!2@3Xa1+w?HoiP>H_+W48` zF{F1Sy^B&ik>2^g*;FiaLS&0dpzkAlsz#{ z+5I`0^tq%@A$^uor;X`3;ms+ zNcv(ilRP8;k6%caSs&AD1f*>QL^9G>k$#%=)uitxeGTbbNncC)M$$6>^!2{V`+xc- z&)lqTxA;DjwY*JuJ89W|`i`DEbC*}%L;7LT_uA6Vb06vZNk6Fgfgb%s{wf|J{Wxj) ze_H;Ze$2J<9iAX9|4%>F$CG}B^h>0lRomyh@_EuP`1nQN|7Fj-Li$zdU-QgV3+yhv zK_>FFH%Wg_`YqD3@$}oIr;#?FC;g7_UDEHl5-mTl*s>oAKeDBD`-JpYq(Al9&q#kR z!55_UKfkC-%CEiV8`5U}q`xKoosoK4rTKwOWXnI2{)6;S(##-jhEMuu;V-e+nBPeM z-d9fgPtyO8{!6mIjW^Bzdh|8|$jl&NitiIS&GbBWR@ng8kuFttVCv6bzY9lie#22BlCC1urm*}w(3kq z{-0Sz`c)mNcy){Iv}*|0^k-O`%*JHaAtRs9tgGyL!eJ45nfyPqA(@SO$W6#>CgpH4 zBaFBHo4OLkBZZrj8D-h{s<$Mwqxh}JY)xi+GTUgmt!b=-jQ}qmO=btrkMZPAWcDVr zGnw6`--XPsUb9?BW-c{(n)<+Eg75^p1b%=5w*$h_F2d0FHuWFnJ)mCRHvU+X!WKL3gP zzp3n7{(7g8`HajvWIiPGu2SazWZoCb|J@h0kspctn9L_pp!ieY=W{aOi1~udmp=Oy znXfI5@56KnzV+Gf$b8?E{gKQ+WPT!J_D*I7nV%K>BK%eOTZBE=^@qqmg&F}F8v$hc z-0WYn3y__K>>S2tXBEySoSm%se|)y=oMiixor~-|WasYT=k1GCHJ@+*S;)>mGZlS3 zW(Sf@kzG)Ng~$eE7dCpNo>te52lPjq%g7n5Cy>{?`3Cc7%xRg9E|>}q7?`PtQd z$(nuHC?LBw*>%XSr+8hj8Rp7G%KWn%lHG)?{NJiJ_R8U8H>>98+Z@BdkS3y>Y_I~+*%EV2iYJ&x?bWDnOyhmbu~!8qUfFt0y? z>@j5J|8}IKBs;oiFB<`5$CI64web^oJlRvpp5VKkNcJSjP9}RwEQ^(=dCln(oI$qd z{eSjsvR9Ce`d>u$9Irf=?0IA_klsc>v??+$fa)XK!{IvbS1bvdLs`bEKAckc({LPO{&U zy^HKiWbY>XDA{|+K1B9jY3?KYfCBS>o$5gshIl}k$qjk)SlWmy#6h+?~;96 zf@x&m>C?D??0ZVR@0TBv{etXAWIrYQu{E)4`J}Ik>}O&=?_s_q`xV)5$jbk9PHCoF zx!r;9$VImNJ=ved|3LOfOIhci$j)%Fl)sSugRJ?#vcHkF0pa!{`zKj>e)ccVxM%zy zvi~|J=5uEL)*&bV&&{s5AGtXkAIZqgMXp0`ZgNR-^N?GBocTYw{=)glMSoj*fa%@q zD%UdtOg50*g5(B~)0_X?!ad5sV$&piZHiopT$)@+E~8Xdm~%>;GA(f-ZZA9T@avPJMmE0zT(XALx?iz9<$Q?#*Q*yhJ+l<^8awExY zr4E}5M+t2NklV87Y+IAthTQh#wpD7o2<;I+>7&V+`S<8|B)5~4^8cLqKe=5^BN@5f z$?Z#S5Ak~nz5nO-)^Z=;d_Qsrku&obKUR1ExdV-vdG`(`cZgE*|6J_<+w|Ju2oguX%#p%jBLU_ni2r z$UUv#8R4@LI;ED+3ttevNbaS+EV)<6y(L~FAom)%spQ@uXM@1+WpDm{{5HAw$W2qp zJHmJSvRb}R?gL}&x<2$(9}~_??h|rm*W^AW_Zhiw$$d`lD=}XP<4=LeeXZp;;S8bba5zozL=m?4~xa3J9TpGD&Ng$u;@ zCtQ#)LAa3DEKE3vFzCB*&nF2}Doi`ZP8(*$nEw-oghj%<%Mxk?n5IN1&kxI%GN$SR zRn-Y65H<+6CTtQ8BWw|_K-eZ+jIbk3SGb5(*+z?6V0{)RG^;0Ef^e{cAugqODZ*tH zEG=BdT@m4OS}q@})Vuli~LAVm(s)X|YaFsrd1oHpTzyA-{BwR=QTEewWY~AGl zcB=UEf5P<%hfA}8a6{ongc~c^BtmyKEk_V;N;ryeGvlq#NJ2CJ9?cfww-j#Wc*1Q6 z45bi~| zH{t%O+DEuA;eI`Wu_6x;%KvB99!z)$;Sq#~n%)jGj_@!aA8tXs%aMdfNpLjbv4rOT zJ~h54K92A)!s7|ACp>|0BH@XIXAo*AgeR-RDTJpHp4wL>@^s(rOu}=-oJDxHY3x*n zk$~`A!V3t^{0Yx@q@gV@6vjXQC7eWfm6(eOFCn~~@KP-=i_q_Ng~e8TrDy#6|L_{| z*AiamG}`?J!g~pCB)mh}n+R_voJ@F&(-7)g06XVx65QTXd#BgP|HHc_xX10Q_&(wN zgbxrtLinJT4-q~bYvLzjO2jMms6X@Lgr5>VLHM%xCkdY-l*5Nl6Fx&2n?IqAhMpbe z|KW>-FS(vkitrV}X@sv5zM*cf5l(ek!q@xC3Ew2tmSeVfKdK#clA9&`~0Uz z@FC$xgdg`X@%w+m&j^2tc*4&KzaadM@JqsP#C%0){_m;?Z3Ga0>z0lu{GQOvpHT1r z<9juOP!1pdtkf^UUxmL#sO$ZM@PA_dBsBjgH1qGdOaBo5YfO~N&*D<#XCr?-`Ps>@ zNWLHWI{7)sXUWe=em?T%|I*tCAU}_AUh@4NZ~Nv4kWY}0{%@9r$j|S1@(Yk3NPfY1 zcXt)}g;hStYvL(DJ}F-QpHKU2X6DKBISE4YdGclQ1uctSS+XGBLbD)WC12|y8|0TF z-z2{%`Ic(izP3Z&{9mL-K-_0B@{41fJ<6!(`4XHXJeR!rzddZ1 z3q)S%81ml#^OMM5u9Ut1Cw~d~OBKxYe=V;dekni zH%Xhnn{6pmL_56M0@0Z{K&pc>> zo#bKiPb>8Z`6=WdSNy2(F{e@d1othfB#=tkisA_3ketY8wFY>BD6iyrxOP{NEn7V@FE!e+r9GSWLm9 zE~{80z?6e2tVLl6g`pIdq_8}Nr6?>*VQC8SJAb#ks+Q~Nu!5Ks9YbLy3ae6B*_O8H zDxP1B!Wv@Y_y3C5^x3s7Fujcc3hPoZ|F?&oZG8%3DQrMt6om~bjG(ZQ%Tm~wg7^Qz zaDRU`Rg=xUW~7#z+tRviL1A|aTT&QJVJiye`4qMmZsR*_XJX^Gx4^1)ps)*tF%)(Z zzoSzs-q}~l{|oZ}_{Fvdg?%W<{0lPw!rrc-q4nQaxSw!;BWruZ-l$5A+(!Z8%Q{}+y=a1@23`(*xj$5I$?r0qMQFH1qwp>P6)6Mfc3fKGA> zrE@8qO7TVtr%_B%IGw`V6waV{q}`L-efCbz+~t{jC_G8wUJ6qv+(+R-=`{ih5A^hZNc_XXM|`cB zznI4;XdD!taEwm!6onTkXk-+gk?dIt&zZnp2|fN_c#(p9zVH%-mt6-6uejYQyhh;- zl}{D+{QS4@CWW`0UOlH#oQ1+W6uzVIE``r1yhq_93TFNkJ`jFrdUs2W{Fs9IKZQ^G zcnY6W_*$g=zwo8vuX?J!p)g(Kw>?$gQ}~_24-|f;pwUqHNtzj^@tackg~G4m&HQ`# zKPdc3A-XevDf{<-v(X4J^LKiRvr=4$;%xSxC>Cd@I2Xl!R#lusIA@P?Zi@XW&Le)_ zK3>cDC=M{D?`{<3|HTC;4s=S23pxSCg*`KfVi3g?WB;d^bR8(BDQ-$JLvaa;S&DUv zIf^BUp|8zTEU30 zO;x9xz;4SKUU`<5XA9#kEM=N=DV|5s442QTu1TxD5iLWV^nn$rKKp|Oz|&@w@{o)@m7kDQk+cj zK8m+dyh|mwQ@q3XxznHOZqM99@m`B(`oR4ZAE5X!MH>gvgW^Ly*+;}oaU~QVqxdw% z$3;FNe9}@@75@~N;xiOqp!lrkpQ9-MkFWhjimy<7$!9eJ;yd}O`n+Z-yGyTA{F>q$ z6hET)CdK!ZeT(AT6yH%i&0pQSu0-VfLivC3L*wIaA5;8XsZWHTQvA%NwEV(iyNWL< ze&u4F;TwuSh@VbT{%@M^l=|LecFrFu{zma9ioZxXgW}IFrRA?Z@$VK}hd+dW`t$!y zDYDc5QR+|eA4+plH2FoG z=>OoQgySjAPiX-s@QnFCrGscHm0-;r8OumOKBx(mJ`bVOY;BHij;<0l?o}z|4XYlhSI9iuO{qy|6f{@(pr>; ziC>%2Ittc}P(eHbD6Q|A4Jd8s|h3Hf0%pxg$ZhC%dTIm-6D2msNHN%7ZB{MR|yp z^8cCLmKN#X|Cg83a`^}qtU!51i`~~qc_qr5QeK(z8kEidDVzB#SdH@PJ<2sHZ$No1 z%I5Qw*QUGQl zN}4TP73HlcZ!2bN%G)?n%k3zSro6o|>Q8xxzF2}CDepviSIRp(p7JhEsqAh-jR1T0 z_oRF(<-I5$PI+(2GV}62l=r240A=%k%KK9u8^0dn3qQ~rTIwJRtWWI!lnKGtMW+qm-t$|q1h&ec*r-t#9?K3TOVdFGV3(2j8$u-e2b8`4m(Bkvf9$J1rP7b`XOw@U{JBzJQ2vhcmz2NJ z()^#YO$T2xU5rM6JxAYb`GW~e`J)BK&!GG}<)1~G|5N@|_?r_b{)6)W6#OZSM!?^e zjXV59WmfV3Qklh(wyex%u?4d`lFA%Z7N9aGmHy)A63$J<{GZCaPG)G!`Gf<62JAu=gU_3#-g>r%;5X;H~38&WA#G5@DhFr@`WVab;6 zi?>ptQl-+MQd6qlld{p^mQ>nQmZQ?4GK5N(%3@SB4l0ZG>7#(k;=(1U3^rc7P+3ys zQo^N$%TQT1zG@vqZxoh+)OyqpJ$YoGJn%- z87-p}m9434uhceFG!81;xs;(PM+P@RLyiB#^RauStG zshmvZLMqYUe>j`UsoLT+;ptS)RB(p7I>q`Hz^+SM+j-8RaxRtgl|8RVc|pYZ+j5bz z6NQt67gLe{$1nBEsN5j_aw=C)xrWM>T3!{Qf~zfv#n)1~PUQ7HeRqDfqpQ zr}8J2e?IPKjqS~T5H`O%N zd8iJeIxp3MRQpqfs?5JSz?Jx(^G5;I1^P&;3yN8Y>cUQAC#l*{5T6ig1XNQ-S~f$q zKsD<%IjW(L^YMMF7O7ULn)y>L`)tJm>mdKHn*UR6P;I&@pKViJfog~95DB_e7oobi zVjBTe7jsI*O9%(|b)dQ=)upH|OLb|Jncn{t*y82HEbq^`BGomh4yC#Z)s?({<(_V< zO23*g_J68tQe9WfT2$9ouugRwbgqPhdsjj3)$brY)c`RZ_q zM^H8M@98s=>gH6ppgQWmy!Zd=*2dd)Z9{cis@qeQ|HnIycG;*Q)iG3erMjcUI|=3g z)tPVpMeas*cUMJK6QR1NEv>`eR1cxLk7WB&)fA}iN7ekF>R4AL<$+=jatzgj-4#(i zlUgRXls!&(d{62`s!vfpiR#T%Po{bq z)l;ZmMDRBo|U3iA@OxITN*}~{Z=R`pdf1Y^Fg6ai|TpxIHqQL>wyjOr~^?-O$?)yWEO zqk0$B+f86qcTm04;&}JFJ%10?d;54P?-xEm^+BqSQGH0uhpA4X`beLW>Z2CVZ1}ij zPf&fbhkTleZK}^veOb)&R9{f=qUlXz{vREW>MK-V7xSv{HQ`iua>Z{5 z-xR(Tp{k}){haDMR6nNrE>$yps_zNkcN)bXQvIlBY5p(%Q=$I;n-zXR)vTWCmsI8d z7RSH;BYry7Z>fH-xaaeq>JJg4^ZZ0Da?Tl4|B&Wq;V)EwRq&gz$N#H;Qj1LcFKV+> z{hR8)68um2PlVR9Hj6E5vr_Y){Oj2i*^k;B3g&cT#dA}W)z{{sHm{iemW{g&ptb-t z#Lw?Ym!&pPr2qVycs#We`m)qcqIMd!lZ~;fIEC7&F7{_Totn(Q zcBa?ZT+lNT>93-84z)|EolETkYUg>)`M&%@YLg<8+C|hRxm3#lM z-4WMX&%3DIt?WI0q?Vc>wfm_(V7w_GbOLG*Q+r&@Bh;oSF#o6am~kl3MKlI>R^AG|_6) zseMcBdurdg5?>hmf3&0)jer@x&(B`)EA@q_{YHHjX>0^g`-9q_3jU(@KLvkBs2%^I zX0yO9+4)R;R_gOmpUq_T*{RP-y`KqeIY+FtcrNO5_blcA_5RcspgtdU*?xV1?S^kO978>zo`_=VNzeG7|JF0qThz1E3lik0hhCGnz`7Nw*QuAN zSETX3|5>k6uQ`oZHY70fcjwfyP2Kx{y-R%&>N5YC_b2lIyQnWg{YdJAsgI;Sgu2-~ z^(BQ%374jB=C62J3+!ymQ(u?*3e;DozM@h?g|Yc7UWNLa)K{gxI`!3Dq4+f{j{BJZ zQ(v3oY8dtPsc%SqgFXTEjrw9~HlaS8`li%J7_ZLaH3ICkn^WJF`Y7r< zP~U?3HpqQ*$Dqi`qT&eY@I{Bd`l`fk+sr@lM& zy{Vi3Q`b1CoB!Lx&a;n;sqagDzaD-p^>Ne>pnfp*1HDEgAU?n$5lQ_}OU2A#)DIVV zL=Sls^$V#VP5o@@(dR!WQ9stQRy&^h1nS3AKh7~a&k58|>?;>@GWFA`pW>@*1W-TC zZL0VTp^X6QXZ7&W@|=hie=c?Nf9mH`zo1W}{ufcdf%-)1S5TiM&Bek?s9#3?(kSlJ zQ@`9Tsb4A0Rn+D7^{c6y`S&QVqkerKL;XhTld0dNs+*0s!`wpsRu}6e=Ktbt1W><2 zc&Cx}Ox;cWHR|_Je~S9O)TdCF`Pc84>;dWzD|nFlLsp_HF^}||>QON^0;oSOe1f`} ze~-pS0QG06KTG{3>d$HUyzm9;FU}O(sa_WUiZJ$nop!32*QtL>{SE3LP=Ay9JJjE@ za_cYuulwKssoPKx|DN!DTU!4QJ^vB)kA18WVA;>8e?$Fq&woMv%P6M)74@%;oar#r zz2;l$-%0a*EHM3#EOImTpJrw<~STWre1no5nmY7T=%7 z!ZhZiv4FAzXyBFc=l?Y1{|)nh8VgxgUy@qd2%r(rF#lJabXgi{8dVw@8U^uLVNMtd zQM{sXs4yM@G*+Rp5sg)8tSf#s8mrS-i$?7K zG}erGoo8(cW{v37b6B?V*7%tfeU$v)OMJ&kcRM$_1j#tt<0q%nrZt~AX5)nq3cJJay~uN}qj zMq_uc*~0=m$zDqBE!@Xv_x0KR#g7#pK;vKqHUen$_if$e@QjWcMBr*V=56KEW#;CQb*LCcv_fX2x*PVw1OX`Cj(>BhLx(>RmHL>gz& zIFH8JUKt(O`+wuy9`X4qzd(2)jf?tHVkXhJ*ciLsOK4oG;4;VP{8!M7zGSYX@d=Hq zXgo;cY8p36b`6bdos!0NG_Ln?{9OQzn`qoa<7OIW^)zmwajSyKri`!Ub}@I*xJ!Ze z|Hj>>k&MQ@E~cRo(72z*13lS?XuLqpts0|8KlS<6RnWOEAr6 z-?6}68}HHhkjDF-|G@JfdB*?zxA7^BNdFm)$d*5+@e_?NXnYgNXnaZID+OP>a>dhW znBmj-md1C+&%B%;X#Ci>lxBwTXBxj4Z&klqU?=?DGk?(dQz@B$<8Q}H^AFAWY5Yr5 z{@Nv%tB zJ(`=)97c0Pn(MnP%?)}q8`0djXE{8IX^s$X+QW~exhKudX_~#$93|XBxFt>R|IMvk z3C(S3j!||yn%f&`RikO{;9}jS9ck_=ekbA1GQX#VoM7y_2;~t=G8Q>@cfm^US-Sp zg>((gYkl@Q$J4xl=G`=Jq$#U!-bC|euerq+PNsPW&D%V0BfzKbjAEMp-~Tr6@fsTe zH18AM@5K+&e46G%G#?ZHFwI94Oo>pzqfV*#ahgvkc+zJz0^)125kOP^-+WH-^E6*D zWh{7!=2tXdruhcVS0s4VvR3t)aH{ZiBkdV{ljess-=g`hc#VMOG{x`up6_Yt{lEEv z=RczPnNlCq{6xX05!%B#e=g<=$I$%J^Iy~ao8~t(f1x>@=8rVLmGV2`_cVWS{rxUK ziJu|-IYQ6N{O!7aqxn0{KWYBalQsYM%Ky=tRprqL_}BQTsx?czi^a3inq6c+pPeJF zZOuh%Gg@=gTAbEAv=*i{FRl4$^_SlKU%>z&wscQKYXLC>X)S1^?Xr-|(i%joOe>(3 zrIrYOGTH?7d>(yG#G(W=pE(31b_RJ59|TqWlJ z3N!-ZGcO`$QK5~1s4cA}Xst$TFs)^14N+=IOWApB1khUA@4hT8d3$R)TFcW~k=6=M zsXjw3)<&vYnbs;UOKVk^qP04$^=Yj^YaLqN|66O(TKm7X>(W}!*ADZw8_?Q>)`roN z)3-}eQ52gU_VRQG4{8> z_Bw#pVYCjUbqFoJ`M0b_fMpN$`f+}v!)YBw>j*VD(q(<>Xj=0B_ysVY)=830pmm(@ zbG(=ngeUsKlW9epoDvtNbmox$$eSzw+ru}W#;eigT4Q!<^8{9{vV}i-B0T!S`W~A zlGcOLJVa{>t%ntx|9j=5v>q4vnD1%+@8hRvJxA+l3C#QznE!jh^I~40^~8y48%-xR*(`DwJiqxBB0FKKBgwBDojDXsTueMIX6i9a;4&Oqy9 zG3Nj7NLqeI%lu!lMnL=m`%28$!f$9z_nL40<$O=;7g|3^@T1TEL~DkapN*OMDzXtk z>o?)=w9Nl${b?G>X#Gt)a>D=7&d~aYc7F-}r9BJnxoFQyyC3b@jBK0#$5rh)TuggT z&&=(ad1%k;;^-K(=cB!Fw4^xyWJOq|U8CJltPxft-oCUGKMgZ*<{c_Fj{9otS@-W(mD=`08aHK!{(X`K|eGKiBXdkQ8c-qI)p5T=l0rp&+ zpzMi`kIHGEO#5`&r-(mQ82i7nXNWmdcvgh=uqp+1+H+`||4VQl?b!UaypZ(0+#Yy|f>peV?-T3m>5UkOKerKidymRlLg- z+E37aRD#Ehx3)G5)bmNtJVpCy7mI(E_A638Cw!jv3$$NS+%p2&FI$P-pI2$WLHjjZ zTK}oEUw5&xZ;F)pTlVdU6!Q+9*=WB@`v=Dn>3+xWJoCM0ex&^y?Vmh9Lmhsm{fh!Ke|y+9{!ZH+ z`w!ZGDr@imY5(m6hPM1i_%EGVVy4sc|G#u*w``}Ma1J_i(iuQ!E;?rTbmpcrkE^mB zJN-q@*TX@J zCg*F-|HTx9HUjAQ_y3&=oi3d!ohF@{SJvq?EOyUqr=^m%&vtrJi_kIimtZkrJObzp zrepR_X9yknzr{<@G5;68j0JXe%h6d?%<^j>91fmIEoGm6gobcT!HfR6dU;*IERtY8yk;%gt_vzsclnQ$bX%^k0v zThQ4~{FcJ4=xpt>bhe@MU;poHPiHip$m(~Hc#LpIr}vxgOlKGIyY}&PcBgYAojvHB zL}yPra^4d=)@y{&S7*W&^esW z(aPEgpmQXhqoTkb@ohOq{ISCEJ^XQWj<=;%ogh5XW$BzuXA+%L=tL>`f9EthXVN*{ z>wA9xzjGFyvt6N@oI~dV1?SQ^PeG6WcP=!g?RXI#^M8BTbA2(LYv`E&)47z+6?86h zSvocX{Iy(3=PEi^$IQ$-bFB)mqhtP0=Z2n=o9H}D=Vm(h(z%7s9TMD1XR>Kbd>ftH zUF>(clTPgabnd2e&wsNT0UeEi&I9W3pwMQ4uH_LrX76;S2p^?m{!iy|6Ik$s-{>hi z&(nEYvTS*^9G%F>6rgZ z_7z$bLRqw^`9ujt79JD+=vW=H2sTiWyZbrjI~ zMmXJT{QLjT_jG=z^8=lq>HH{-`9GZ*ri?Gv{9mMv06M?96rDfl&O+x;I{y>@7oGq5 zf9D@M|C-pHq&usN>CR^QuKB;6usa9cB;7eh&P8`2x^vT=pYA+#=c7BX`2J3;c!0&$ z0Y}m`|ED`pXy)&DEf=Oc$T4&Sx{1Cl-4xwC-Lz!h|GQbbIj;}nJJ2n7rYLbqSf*Q{ zTeVblqujmf*6AKWw?TJ3x=p%E(QQfGrn>~)4&6oRcCEw?yojq(ycpfZjgR{b7CFQi zQ)&d*y;_>?s&tp3yF6VR5Xvs+t5%@9l9(0g4z+CDZDo8Z6uKY>ngO|UO3t}8AEqxF*X9|`oI6s-6dLz(Fm~nwmaPe z=?8ap~#qX`kQ(3&Gvp-QC^Y-60U%-66PpaDwX(f4^5~1t3WOz!4P`ZfHp_ERcbQq3M*Y8ZB&DN_Sjl53oj~bW#bW-H zj+bn)h7*-J$uN{ow*0BepGN5{1*cOwLqSof_-sn&Q#yyzfccl?T(IlEKxOvt|CBDK zbR(rpC|ybEQjy7GE~6yoPw5K7geQjW26_h0-_$ zujWyA<~0F|m4AcMo0Q&F{FcVIDHZ;&`u9XE6TPqT1H0OfD1A-oVzl_kHSG=Y-!|I&AqzPGhMm|9BW|M`p3Pa1#L_>1lE8|B8dY|E+A60c`!hJiChJ2%v0#{--=Q<;5w_qvX7l z7p5%!PkDaI3sPPn$MVYGljVg5@FE6NUX=1;MvzC!OHeK=SW@Fsl$WNwtm0+zXqRXI z{kL2ZQVOdYYn1DT(HWbRcc{9lW^o1$5D4;xoviLvch;phx zkAQMwHJOsVfhzHT%5o?uSV3d)^Z%4rro0*DRVc4Zc~#1zD37GP2IbYPes$AXtJb8v zmf`g(*0!3_l-ChltaCle8&OvOm#H_Pyx~BV`hQvdU$UFps?90yM0pF!>ip#`DQ}fm zQQo@WS%=$F-j4DPinq75J5H?GS+l!P-c@*MvYS=zLHP{Ids04}@?Mnpr@Xfc)c?!- zTK#@Tuc-qlA4vHS%3}VM4>p=yK>1LsKg{+&g7S%!kEDDo<)c)8wAI+Z|4>%{FBkq# z`2-OZTPH^V<&!C&Lisesrw(L`pZ}zsYp$hy7Uhd6pH2CE%IB!~T#ah}Lp?8`e4#Xv z&KKE$WDHtTQ!#o?C1ZLd8sU{%zRYlr?Q~p1w@?hKxN4Pm0v{TqEr?$0v#?vr9ov$D$7z? zN|~i4E7w){Ka~=dDiu8@DixE}{xy{i`M(aER9Xt!MoGmHAnS3dY)HkUvN{!?%5qe? zR1zwIRfbv^X^ibo>TyuXtfoh0gy7;XEU)4fsH~!3MJg*PSb0FRsxl)rt|t6Y`5IK# zq_Peb@qa3#OqR;pR7UreRMyq(dNwOZ0F@17DA%OQ`yck+pA^=D&qfCb~3!qwF{Mfl$0ZY%5GG4SFi__y%g+ec1H2u zc9*RGSN5Z_f1c9p0aOk&SUVp~ zzVJoWg;Z{!auJowsa$M$Dwj~XRF#(vD6gP$jgnVVxymZV|LrAQOXWJtUvJ49sobVj zH)*_C<1HF*H5$dYYrI3_7%F$>z;+l*VR~Lf*n>ZDRtos6pe6L7|Ms#8*(%4()o%``I1 z*IAuThtu2a3{+>d7^|6?>cUiqQJt6SaH?}qokgo=)i|5R*^OADtYJ=#b5WgJfjs}q zOJs!OS0ajHug4b>%cnZ-*}UB=>N1;{Mr z98j%Lty8Tku9=kLhF}pi4N0|4HKZ!$Pqjl;9{8!c8tvyl)vgW;|JPX}s$%t2V~q(_ z@qc+0JKs}&1l8sGJk=Gb{!Dd6s+Uq-iRuAVSEjlZ)m5l&Ky_8BYf>F)^i<^tpt`!o zHH4I_TZ`&CR7WYfwveJ3Z6{qfZF?B2@g zc~RY$>V7)hUj*8L>VZ`A&IeIFnd-q*kE41B)gx4PsK&#n9&W@sRR6CYMO9CPYT^Hy z(j%Z))$vqMQ1V2nmBpWA7kr9k^a!Y)rrFb}o+13uuAW8pY^oPfJx2xV|5fpS9iDH* zR4>%wMHVUh+PKi#wtVe)c``c9Cqxz2J^;>}Aj=yhvs{hNbex$V@Q~ku~b@x7_ z`knHhQ~iRf8h&*=)i3)R&FT?Q{f6p*|5v})l$w8ag3(j`QAz9n)nBNsM)g-}OH=)g z+B8&urJcDU_pc8BD>Su9WLOjbmzCEhxBL{;rqq=9KQ%Fb zd5LCPYO_+Cj@nF`nqK1!8s!L}hS?>>Giw}1ZMcG2@@TTuW}~(cwb`l7M{N#jbE{xZ zjdKljn1|ZD{VL7QPi+AO3kqMXYGG=NE4c`@MHMX8&+1T)0BTE8lS4sXaxKeH3#l!u zsS>q1wX(@lt5B;dUo&FG4QdXxrq#5RY#RZ!4mF>etE6X0i861On)<(aBh?~mBb1Ld zCK^*}nF29?dC3aJ|EVocZDndJ7@pdS)K)SA&8}kkRdqPhq^PY+74E^Bek7WxihsP=U4r1)b`TU?$q{Bu&1fYvpU?H+CB>Q zrM91>a=u6%K=CJIZvB61fYrQ6y4xu~71-OkIS zA*o$J?Lrxf@*-;D{{z`esa;0xCTf>cyN=ow)UHhn^cTNqixJOioul(GN*TVIg+w$vA*z8v+1sduO^LcL0TQR+)lFZ`eS;?%|b zi`}j-MZH9QX>GL(bus^9*>a6#i$~e)XzH6#Ux)ez)a7W%U)0yrxW3gC{!e`)>KhwPzA);WQWvYI zzM00&sc&IQbhwpZ$!<-3!2j#pQQwvN_BOi%^&KtViTci3vWsDKmfffyNPTzZ_n^KH z^*t5Kp`c)I0mZKFtIU4X_orU`L*iwg!(DeZ>4@J^-HLqM*VE+r;AK>;|%Ho6rUwP zcJdtR7btTsbv1uco^P|_|I{ziIOPA-FQtAJ^~*#ig3GC2VeyrAL$0QNBlT-ka4q%g z6{z$NN z_?Wty|4=GF0zS9dFQ|_y{GZ0uMk8x$Ol$Si2@qxm8ne-uk%ss@4K&WAQI7!g_Gk>JF^iOlX4YbbjoE34 z)zg@R#+(Y~G8*kX4~_YioR`LYeO{RbG%jfRC|;PxA~Y&A7NxPYGKKX{>8(^ffeEG}<&eG}Qcy-Ec)vV4ucjG`ciK(Fka) zKqI6fR!<|M5i3Xr^qDd}8p|mdAt~A6bIn^mBm}DavM`cV>=ygPh)2qJ1E{!<4$>$m(071!8CTIv6~_DNMjG0d(+sH#^*Hl zqHz_Ce0VI4eP|p`V_zBvscb(Q``Zo&C}aQs-^Rg~KScRMX{i6}yviJ*@kotF(KtE> zitWGuHjbll1`Rd;#tAe|p>d+soJ8YfgY_y-)xy(k_H+Sqb@_!{O5-dV7t%PJ#(6Z( zv6^#@CXY1Ery+;J0CSP@7t^?8fE53yak<7TgqPu!0%WeMX*^Ej8XEV|xR%E4G_Ip@ zGYvTiRCxo98)@8>iw$D{jaz8kYBj~r|Epg8zcGf!oixTOQyc*_#Q$yiy)+)8A^xwL z`)NF2@q<<)&;OczMB}409uuapizjHjMdL{tFVT34#&a|Z|EKW`jb}}5E~fFkmRtXC zyl6YTOye~guW0sFqo*-WfK*xkZ>aw_-ZZ?5-=^^njgM)(OXC9?@7Y@W`A_3R%jgjx z-3tGw@hOeZ23mbV)1@(<=6p21r12k(uW0vdb8vm&5FB*RfS#&7wFO7c-ra1}C8EH;Rb6T2{(NwE% zPEK(J~BWIdYe()4Mr zO0!FI1kHeELNl~g5l!*`{%UEaG&610o0wmY=JGUGqPc=*SCnkA&XoXwm+)+}}YNvtS*oEeA||K>$BFQ%!6-@Jt8rKVOpU#|MX|CPCl<`|k+)4V}b*U-FH z!F3wd|BLs-jWlnid6V)t=TX5e<{D|Q0*X(!5LgvBJxO-KnKBM4SnlCDNPUG`5 zU&w)7+e=EmER3w@6_cVlPKU2)wEo|GLx*qDd`o1-jPKA|mgc*(a+7?I=GQder}>F0 zKcFf8PxB*3*Yq%|KcJpx3p-xsvz(bT+l4fE4ljMf6Q7FK>ijdBEN=S2ia?V^@hoYqpx z=n>G8Bfz#=TKQ${utaMuT4h=(tqQHSW~;Pn3hK0)3W~q~rdW>vxgv*FNUKB3SKg)N z<-l}Srb{d6GqfVXvd)-RVz911qqPdH9<3E2ExqfG}|as<#?SL1rNY6BgL`778+WAXe?Yg1a=)7p&I zmb5n4)D}i**RvI^t!ZtmslxviZ)XIGchI;at(|h9cxM5!tGm+Lm)35y_M)}>upjbU zvj?p`b1>}5lZL(ewK98a+(*dQZXEX1614Uk_QaC3_8<2CDYOotbzlyLeYg9tw^vf; zV7klFI)v8Av<@Bi#pbjQqjfy3!)YB&>j-6zq;*sdhEMnN@aaY?bBxAgX&pCg{B6U= z9X{-VC5OG5zgtdF{zQ!@<#E`3k0?GxnvJl&^mMYoR1ItdaL2f zoHu;7b7`HOD~DGe9zOkBwDRHkw9b=0pN|CDv$Yew64Kfo|gXb|C{+XUN=nQ^|WrFo$vgOw5OtV6RlTi-AwCYTDQ=;kJhcU z?xb~_wz{3x9XZhZGDbjw@6zm8TK6cp+wh9-HJH}@0%WTnp!J}|56OE#$VX^BN9$3= zkI{OXR=(gTb*R7pRn$Hug+<9Tw4RlrGPIso@e3MXr1dhbm-<;HUy-4_qsGztj@E0m zKBM(It+zG%hQ>EFzGaoU|9?m;_y6~mf6q?+fe|SA5v@X_F0Pd(tU>Zva~C-OTx%i zmraUxm3EzW&G5R;2JNQFT1}hwNZJnVly--9NZZX*v_0Bg+J0Y5I}lu4Z={;oFtiiP zXSA26-P7y{jmsI0&b|Wem6cpk<4Tf}-CIS6tIDuoR-?TM?bT_oOM4C4Ytvp+HEYox zWi)2@lpIZa9U+U_^=NOX{Q9&v=<~{Kq*47}u5nY^+tS{Q_Lj<<-P^)+roEMtThrbq z2gP)<+U;a0<=fNVp`W6?6YckD?@ar0+Ply`iuSIw_oBU<)$dMw4~zG-v+PZKf9gkm_O~OX+KB%8QS_Uzjj_tJ#W|WBJI~{zeM|0+Ao_9v|kx$ zHBR-f+0+}f-&W>Ljc?gL@96Md+J*C5{RcR6)Bce5AGANBJ%RSew7;hP3GMN;Kc)RS z?az!@qAdH1{*d;UwDkzEi>Lh!?Qdy+XEe0Gr~N};pD%{?kJ{uX+P^CJnf5QT$e}y< z8|~lwCA9y<$({Kx+W*r2TT8_J6%^O7a=x=_RbvpX*J{Z>&kI9!r2sOW1LM2eZg-gL%l|vEpWES z*%C)S?Z?q0z}b4>+PBS>IQslAK>QzPM~yp~CW?2#*$-z|#k=9`iL<+8MZAXqX}%ZE zJ~(?DUKufelg%T}{x}EV9E@|I;c*T!E5SJg=P;Z@C)OWsvq$1whI16onK(z|oPu)< z&WSk3;)w0z9A}h@T80S(P^?zmTnlHz>9!DSkohxzF@SUr))z!B4TGI!oI0bNSz!`&cBhIZj zH{slDyWL_+wEQ-l+Xses7>si#&OJEd|2SiD?k=vecvswub3cw82LspsfbIVf&i6PE zE!$}bX+>> z|D6(@x{AwmDsY)?ltGLiNFjz?!C9iPr}bh>mBIsu)CPAE#< z4b{iCLrNzzDLOqmBZg$MhUMwV(>|RQG_GisE9-C-I;-}3=77#>bk?P_I-OB;)}XT% zoi(MTKecGq*4oi@)|r@JkIqJP)~B-}9rb@xRouai=@kA?XHzr zY(-}~I$P^3+i2WY#6_R&>Fh#h2Rb{^5&!S^p|i6Y(oz5K?AFiH*@MphboQjP51qY) zmp$3r>I?s;v!9*i02PS;(>ch<6dyw86gr2}IZ}s*X*^ux5qZqZ=^RDpcsfVZIhM{b zhE&0Ef(y+Fbkz1cCl0K?I0ERLO6MFpr_ni63s0w0n7YJ$`G!<{ zA)VLgTtw$lIv3NqmChw}uAy@&oh#^Erkcw|U##j%I^z6#6@~e$=2|+}E4a??&kb~L zrgI}5{rBIY4g>z*xsA?!bZ)0Jmd+h??$i!r2Ci5C{=NoAy>-^R#zsH@F&JT3{pfiEa&zk*F<4+=% z9r%ULZ*+c@VZq1&Vey}I{-GoOPv`FeJ})$$|8Jpm)%;BdcQV{*aVN)}N($X6aHkxq zb*ENx8dIovI@}p>r|)Z&oDr7+&CGZw;|{~U8+SPFcDS?P2Dr20E`>WA?)+LcJMJ8~ z^C+GZcP`wyizfY@bm!Hq^?!E(+{JMh#9ah;Ax$kTC3-D7TvX#?#jd(bm@KaT{+C?f z(ztcpWmKmA@0M_@xMkdmsVbs~Yqn1VSF9da{oifj%5fmC{JyvyTwk;L9f9i^UYV}d zgt+VDMz|~B#<)G)Lq{H3slnxa;7K!X2HHxN8@44ej%~xa*l#D%b#bOWX}{H`U=rxEo7WYKv1q@n#xx zatq0tuNQYK!J^z6cN+!U8b;T-J#PNq*a7!o+#PZE!`%sYcU&=l++8&8iaTWfTD6Dr zd*becyBBWZ{C38||Lt&p6(4}B{_hU>zk3MoF}R1S;4oZ01>D1RX#L+kN{2`1QC`JG z9gBM$?g^SY-tf35>QD{>D?0`EQruH<&(YLr8c)YP16OPx_e`r)^VdS$b8#=k75`Vw z`5G^<%8PV(vCUp0K<@ZuxHsZnj(aWc6}VU7UTHL%z1r%pF@5qO?sd3w5GdB4{}l2j z+%dQ}T}qD4qr7B2_u%DUCimk0je8&N8@Tu5K9BnV z?o+rA;y#M|kXAj6`$(~>VtXIMeFFFKfo@Osv6eiI`;3BTai5cvdF#r&FW`#FxZmS`gZo{c!u_@{&^`PCcY?Vz+#hlECqM1Q z;{Ku~zvBLZ`x~yBf4;C{ZGYna)!!CX{)3lW?*H(n#Qhgu$M{&iph@cpIr~W4ukIr2l^NHp3IE z$ID+^;B7fLyYgG(iT~UF+u^Cbd)wpffVUIgj{U6acP=_ePyH6alT!e1cO%2w6Yp@m zz3>jk+Z%5`&F+IYkjQZFqO6=Jx)5vFp4O?=HNt1z*gV`~Q=8_u@T@cOTw^ zT6;g<1O3j*JcRc!-o*azJ*Fx3f4R&jq(s0|c+YC;X^q9_KX`fs$aOuB_kxHE{Y!Y` z@m|Jz7w;9kxA0!Y6T`f`cwZP&@s}FE!ut{LYrOAu_zm8-c;A_BMvV7^04bkfnV)p{Gv2QX>KN5dU{MGQ+(BbMvQ$*Pf^?!eq znGSz6{)YJLXwP-=*T-K^Qo0!Y4GhriM)+IcZ;Zbg{wDaF_InzD-(UZh_*-kqR(%bA zaRlIRhkpnD_V}mb?|^?a{*L$u^}Hv{_r6D#pJKUrZkVdi)y{sQC*cXMvsQ z7ERrXf185a2U273C*a?S|2qC%_>ba`#eWF@Zv6Z3?-8YRyLVu1_v1f+FK2;}#kD-F zvPXz<&z=$${+C_!E8dujP6KNbL*w9TrCb{(JcHnLqyf15G|O82@AZFY!OY|6Hp+#TWm# zS@nO}jq#TG3jZ7YuLm^W;_F%951j(|KiJj&NOxNNpXg4C|1*BRj9>8OnIHdG{NIdB zm-h$$-}t%zPxSn+%75(a|LRbV0|8w*0*Z;clhK`=?o`Ul5kPm!f$Y?D)&EsbcRISW z(4C&HntXQ#x--(H(C2&AoyoQxCZu#5Zkbu>&QEtXx?=cr9hKHZwedLHxF@FfqV+ay|sZj0b(x^23T({<<`N4Gq!PNR#hKyhj-b0H-R0=6LU(z(E7Dz| zD3p?w=&oE0wGZ7@>8?(9B;D1D&IP}Q>70{v*Rr#WqPsTT(Gz!Am+rQ7*Q1-?j`ito zlxOK~pm9UHs*UMxVyftFN_VrOLw+HTPD*zR6>mv*Yr0!WO0SgeHhmf0?da~Lvh6kQ zKzGN1?9Oy|qq~bRGW)J3MR#`{?qPAiORVNHy0_B3obEL$ zzCz=b8n2>zwUO!YTDmvVy-xA<8gGznG1pDX+-w-Sx7d~6M)xjF-A?xon;oOfoidd7 z)mXX@Dswm8d+6S$_+IHC?~42BK2TivqmxRB+}VfdK1}yfx{nBBwng~I@)8w1L6AGl zlXP`dp7$4-H(*{FpokOxAGIZpV9qP$f4;zr~5^pq5EZy>3&7` zJGx&h{zl`sqAB`(FIZ$h(48>A|3vp6x<6~`7rKAY{naXeqx*Ybse(T>{-yD6+xdS4 zxrhHtFd5zdM4!(ROrmkpLK94`!znaQNibCoBxTkXOhYgO!L*v4PEyigdZQtjkzi(J z&^VK=8m7bHMy7aHf>j7+BPbEfPOuQc90c=fYEFW=2p#dITF0 ztgnI%2ny%7%8ixZq|nQbZAP#y!R7>F_yk)JY-z+sL$I~-#SuWT9l;I++ncOi(vBAF zOmHB`Jhw*6v2IJHZ}OV&9F*@1?Q0%Zm3U*pFa;+wFj&MBfPn2N4`ha0J02 z1cwob{~Nc_+QUti;v)&f{DqM{Ifif#f@2AOCpeDaUV`HZ&L=p5;4IajNN^Itsfte~ zIHjnS4LObA4CPNB=zr#b;B3vFLm>XI_&mG*3ka?yxRBsVf{O?))vO!=1eb_d_Wv>+ zUQQs+FNNlPC7P==b+yK8Y|rZmZX>v!;3k3_q(qcA3XpE%{{*)X+-exh-%fC+rtZ)v z{;&GG2<{;mOK`Vg1|z|J1n&^sPw*VU0|ZYJJV@{u!9xTO+x0v`@TkF-d0d*vGM+Hq z2%gg6(;A;4c(%|NYj~dEWdc18f)}MkYF`o{SM&a`XMuxK5 z;s_x4p5SMK9|(R_euB{}{%HXJqRg)ZzYUOo5c&jv63$8R7vXdSe-j#q|A*jzTJkT! zfBh0!NjNFtl#&W3Bb=OY3Uloy5>7=pjb^7Vcu`Jkv(ppKq}jaBj0(j3ZFXkDS(MZx zARKP_SqW!Xezt+0bC^QHxd@jcoSRUsK9nPXa9%?3f7@XJ!bJ%eBwUzqA>oHoix^C} z7~v9xi%W@qMG&g_tCDbO!YZNqf4D4RIjJ(rp#6v#sBkV5N=DjqcYoR+@5d;Nfp_h2zMpi*)W8=2r!R=;ckTT z{BIb-JqaHs+>7v3!hGJt2=^g8kZ|8zK)9dA{f(YbkAU36!-FhyunG<#RR1q#Kb-Iw z<&Pjd(khQq=4iX~#}b~X%yERrTg?dqimf<_@MIO7VzPSGrx9L7csk)ZnmU8Nr8-%Z$q2USb^M5Eu0O30t-|cG%-zWT7$qxuWB>ZUN zc|RfilJHZ)F9<&){JbdCH-=V?w=4XLP;8&@>wX8qZ;hVtd!pPPe;}HSa021Kgg+AI z#{LuGuY^An{xaB^@HfKW`+c-+?*IP~=Kfzi`P+H_Cxt_MD5n6Co(|EZh9{bwXhxzb zh^8f)l4xq8srpq!au6709*L$Snx1Irc_W{Q2%=#`GZ`h(%me!2L~xpI~T9jyZ zqWOsCAeviy&Z$l28j#IHB;OhoRuIikB!*A4fW`#}lnWE7`Rf!!i>Y97jY|+MMWp_3 zzEq>72MU)Z{)DJR^aoLy=t80j(KbX?qSc9NL>^I{s7)m1Pt-KEL@jeIN;*Vp{vvSg zHTpy=5_O4EqJStS3W=ir)K*p;0Yn+mazs6%5k==>waXK&(4Q*@L@Vi}D-*4%U=`bH zB++Vv{fX8f+KgyTqR~WaNlI2YO5@r_Nwf~phD7TUtxvR`(b$F?Sg;Y%CPd=@wrbM> zyt%XGAR=-8qM;5<#K z`9~LsKs7`c5xq)uG0{Clmk?b~bScqQM3)hX`P=d9~zgym)=;eG! zB>r!w8%OjR(Q8B>5xq|IHqjfB6`6i75WQuU?-0GOyc_{U?}@CK=mVk;2ZkT3;1i9X z3a?6{&xs}weWCn#qHl=4RQwf@b^b#6Ez$Qx-}P%%_Ja(I8Gj`DiRf3NpEYHV0G*5I zHzkWxfap)+orwM-UWVvz;(3YwA%^IG#8VUfOFXIS|0AA6rZA6K@npnP5>HNSpa1)_ z$5WYQNL4%y@wCL#6Hh0#sv(|%ct+8f5BKt&k7pvDP4zPq4#kT%t_+F z)Dr6vP|ThXr{=1OGvc1nSY|omRf(6^@)d|zBG%7;%o`(KnYeKNqDp2NNxT~I8pNv) zkZTGqW*kMl74h1{n-Y&E-hg-=;`NEwC06s-=CXj|y|E$j#>5--yXAm*6T8CAOlRWF ziMJr$vXB)klp}z68{+L1Y^zb8|MPO<;`yI=N84>@;v0x}AwHRSSK>p6cO%}9cz5D` zi1#4gOFQgo^os45NxZLVtK|L~4ZkYT6;S28KN=UD>D}UPpsb> z#OD&L?Z+b6zap#N32$u-2+Y4%!ENPPW3 zhZ~7sB)*CG0pgp9?heuDUMVa$vgiJu~Vj`(TSKSTU%AtK`5cPh;-?|4metOiD5X$z&u`i6EI=;}jaF z%wy3cnVMu8l4%V?G9AhEMIY6W%t$gT2_(Zv$J2MN3v9Sy{RnmrhnCS%YLG z$!b=q{$H$C{lDliisU?!wMq6P8BMYy$vPyPldMa!5y^Ta8)*OarFs5UnQUl)k{gq3 zs=)exvYAX*bl!qw8vsgnE{b=xwY!t- zL$U{n`hT*g;Z-y6^^z1v0LlI&$C4aCawN%tB!`h4L~@Agt^X&7_M0ewxJG&Y*VP^+ zKyK^NBx3&Nib#$lIhEvil9Nc(|7D9#v{mx_PjbqD{xp&^l{}r~4AVsWpG6|i{3K`F z+H(i0&LF5IQY5#L+(9D8f$3xUJ4qfVxr^ihlCdQBlH4sRnNiLH?SG#R z?>9rm50Z%ClRTu+{wqN8s16^?qnU-|36hsdo+NpWi@|&5fmL>CwYtH4U#vFvWU{~ZCm>;Y5rCJ9?5?s?~{C$*OGid z@*#;l>XUp#^0Dbj@`io$cBx3$rSopui?C~jtkxnD6(rKlG+1qq_(ixSUVSvPDXC|GMbeIaP|EKEzMfq%` zvy;wAI>$iyT!M89(s@XiAf1KNB3+bJ{Xbo#&#QPbQt^Mgo+U}k zq)TaPY0_mCEHfY|KL1y~LRux2vq1N%PO9eLe_y37((Osxq$`p-q&?COsXphYE~!V_ zCG`iI2ZD=kQ4UCB(v(#E->xtl(2OvcbU9La{?A{e#iu}|E0L~Gx-#i%q^oFZRgEK! zQrEmX>Dr`gkgi3l{$I>KN;JhS7)`pa7OrEN^#-yVkgD6Kas-fWM7lBQCVhdqxGN_qq7X`~mCo=$om=^3PF zlb%U>mi#nYzMeeFg`Y!uu34TeEdQ~zRKF2OFCe|pFjjdn>6N6HkX}xDDXISDpS(n? zwAB^1!&Ri$l3q=!zxib~q}P$^!@o|gbKOXK7wJu;w`qr)NpB&&wOC%UX}6P(A-zMI z=dXgi)6O-P^nTL2N#(Jh)cSua{%=?Q0O`Y|50dI%e$x&*yBr6$&ts&olRi%R9O)C< z>PgaPNS`8oy4WAHY?-C_S76fTNnawB=YP@{&2-xNWm2{M^c8b0q~l0m6T#5Vzd`!8 z7V5VE>073pRG(($C9l76lwpP5-m zhy0&Z&0iMzm7V1q(jQ5`CH;Z)J5qK2e0f9HsJ{g!B|mA~pGkj_mE`L$ZozM)f06z! zq{#jt{Zp`ZApP6&|B%W%&GP?|%|JE@*)(L6l1(YK*<@sslZo>e3&^iG(?cPfT1a!t zL@7rA*>oDGHz~3i$z~^mY#7;0nwnWsW+mBhvRTR0{D;WdZ0#Im^O4O-CO`8@HkY|U zWb=^eU;ebSlg&@Ipf=YdplH5Ou^ZVUWGj#@O4cM>jI2VoIN8!d1Q{tI%IB9JG586io14&Az4Nik%{e- z#pX&Cr*>66vgOD|NGn|lnf~%`ezEzfovlc=A=ye~Ymu!?Hj+&JKNJ6#mu%o_WNVPE z-tVBK9s!aaMYayv+9pdj+RnQ!nLP88t!J4HL}T7**+yjBkZnx1CD|rqo2gPx2W`GN znVP>YQb_5u6`4H(WT^h1ZAZ3)X15oaT+xmKid(re*`H*)kljzVE7^HuyOAA3wmaDY zWP6b9L#BsCwij7ZWmmW_+5XyD|Ng^J&jZO0BRh!f5VC`1E=`f?^M8R4Cp%JWtc9xLlO(HvR z4%xXzZ>!EHyN>Jvva850B)gRCBAxDHvP;a2rUTh!Wa9Z`@|}Xta-{(hg}<8Y8jG*B z{jVn*Lv{n%ZDco+-9mN~nLPOyt151Xo&rUm+sV}bi`1QD_mbU3CV%;dY;3=f?4IIU zWcK0+AbWu9BeDm{ULbpj>?yK`$sX4gK0@{=*<(^=_Cy+r|7%wN|HlG9P4*1gb7ap- zwphvYMybnqk?ak!m&jfvd)an)MS$${II`DsO!k^Ed3n*{O|tjN-XeR4OpXIthOFUT zviFK5sh;cuE&p&p^D)_XN`6B2DcP4~pOJk*CI>;kmTbJ8>npNvRR6UIWR`CQsF>_~ zvY*K0n}YmBHbLW$Hv6*{qhigx5Mj98Pamdg}jXF0=E!+377tZw`9%)0>mtJoM&L{oHw!SH3^Jc@3sFpJf)H zrw{zS1?ep$q(!7^D^{Srnf9TmtKipO$B9o6$RBi z$}4~8^y>6l^cu=H`@9a@^c;Hnmw)U^=y~*d^n7|Ty)HfdzMvOKVSeE5Zhf7QNNztwB$J`D^IT+MoaI zjiNVNJLunk$d@5ow2mxHzS54y-n!p?|i0nyAF6%NUi7YhHX!*`is36t-Z(G+?sOicWLcI>sea+(z=A!ezcCKwLh)H zXdOW7U|I)C33dKgfAk6;LhDfNQRIiyI*Qg2jfd8erqjsX zDYcWx~q;(FhvuNqR`D3Ez(mJnc&v-7Nr8J+`g^E_M zs@e-`o7SbY?xb}Yt($0FPU{+4SJ1kO)|Cn{(!p)4H41eUfsIjQ1Mk{j?qw&jZS%syw8r6#pZ% z9;c=BpVni_FI8wgLF*}6PYxlUruB?o6J7T?T3^$8o|Zba(|Uo{i?m*&^%AXDXuYi2 zR7JHBG*q-+r}Y-CH)x6YOG{0Z*4w7TcWHe>>pfZ@(o*_Q>w_lUAU~q@v9fh1pVIn* z)@LUAc>|{PWo^(B@fR?yZ)p8Z>swmC(E5&+QhQq8(^BGZR!q+St)GWHztZ}H)^EzA z@V_@mvHz6uFBQ@sO}zy)|8@VXoC^P66U7=EYhSE!uvW(!7i)SIwZ_95A8T@~39u#> z&xA5gq_Ua^v?jrt6w4?;Q^*2qN-R15TmOeOMt9YG%GOj^(_&4HHO+vh24GF6rqV6e z3|RAF&4@Jz)=XHlVk!N{67e6YKASja*Pp%u%!xG@);w6E|I&|O#9DsHUJ+{* ztd+1<)=s@Xt76Ij`74DaYYnVTu-3%NvDU&0v07LzmW9>9YGaA`%bH7dM-j?;O1g*T zW69xv#2I0!(>_*=m8c~ed5RP(Qw;i93as_8N-Pn4tCB1^|Enie=YOnqu-4TKO&iL& zKGp_U8)0pzs7ClVZfvYgv9`t9Oc*xD+6qgZ|7E(RG8Dgh5fINds!2t=9o8OL+hgq{ z(;cvOY%nz~*3MW;`LT8}Rcd>81*p?UdaJj9y#%&5);=oQw5J&M!@2=$f2@k98u}3AIy~R?(Bx zR6X@6SQlcQigh;DX_9z4)|psmD1b@9I?LeC!8#A?+-BNfu+A5%3sgn*To++oiFGm7 zWiW!cQ7}#T2 zk1MD6v7W?w21}j)v7R1)v7W_x9_zUw&kM@dSubI|hxIbn>$L~#6)dg)Sg$FJ`dr?? zdRwAu7r=U}@r(Tq*1Kw|+1|(c0_y{;kFh>%{8;Ax-}(eg$v&3+`)`tkrO*H3mo30j zTL6~43s~P^eT(%o)^}JxVtrpK}j5(e_wucMa{a38$q!4()Nr-1dKCZoYra_21JTkM{Vu^*90c zU$iHr{S)npXzxIKV%iJQo`iOtH7V^ebr$W(XirXi3bExaKso086(^OK2GxmsKJC6wA|I zjrIz(SC-I{dup-t3a4yS!I?IUO(C72^eM~@Nbu>&XV<7uBu`vlr&(ms*)$pSdZ zEYT^nPp5qRxc19#HChqn61A86k_ly$H0+(%pP|CHS-|tr)WP!`*GS2(|%N7k7z;#c&s6z z{e*;`Y^GvAOX#Y$5Pul;` z{)_hCno2XPx`yY!+Q1%b#AA_Dx=c>=5xVb0((hp zwJ$Ut0W5>PJod8K%W1zvu~(4jipr@yD`V%_t6;m>t76;Ot6{H+y*jp5euG>KTlC*< zHJ*CJZkuRFrp{2v!&dT+?PCYn5q8)-R6SzHLv~kXDP)SBHMU?1?5(j&?2WN2?DepF z*lP>2-=t%&gT3y6NDW7A?}ELva*h<*wXw04{$uYU23vyy$|-?*!yCi zgS{X25!m})2mnzk&S`_M6!6NL01}TW{V$zqu>YeokpgtaqBAy~@x&fSM!El2q4DWVC?2iNvS%w&t{tLq#bmpZqC!M+J44wZw^JuW@XFfU$2*dmX2AM8IXE8bpE2n}j zLPv>z(>a~R=_t*ovxJOG8voK#cNsNpz6qV>=xj)5c{&|BE6`bmj?#ZRE6KR>5OP&I zYtmVb&gykYc-9z-u0^L!r$xtVq7A>mCh?ZxO5Ua9-WYmPbbhw%^A^&hZ*Q} z>Ev`$I@y3zdMgx6XH|66QJ+qaPM?n21qNU`>(W`D&U&MrM*lk-(b-ONH>R@*oh`)P zl+I>!HrFY7t+u4I4V|s%n8UxRLTB3sNoRXHd(qi}&MtIz6sn!*>^%Azccrrjo!#gt z@mC?uzo(woPW3E%)7hu-(An2u_NQ|*odf8cMCU*{M+j2w0(1_ha|oTo#6DD4RNvUc z4at#oj-w+l0-d7;b_^YJ_?I5UdAy7#$arEs)>L#(rgJHsQ|O#S=TtgpNL1-RozqQk zXVN*#*rNYB_gp&av`^cV ztD7v7dmWt{>0B>_Hz=^Ka#Lf}Bb{65yh7(zIuFvhjm}+kZWq7W0_fbSkUHybI`@h5 z9wEHfR1y8}JkY=d@DQD+=sZkEbiVTlok!`&FTX-1m?vaZ+kxSEn$Gj$e1^`mbe_{8 z{Y`j*&P#M&RL+r3l`!JIVT5#&75h>3`>YasEK(Cptf>6zQMN z&vbqnP52wm4s?FUS%%IZI8)L26K7&Nf8mTx=Wjay301uX)L*}U8y?+^GuD6#XPnx` z85d^)obhnR*P*7aGa=4II#+up!5M=yDb5r)as%m1j-zjW4FAxwJ5vtQai+$Z9cLPx znQ^97?K#uo%!o5RjuQVtR}#{NX$C*{e+3Hbxo&#qQoH=pk$C(R9$v)29COR+9 ze50Rb0i1a>=^Nr~q^EjKHo@6aLYv}jCdTGCTMSpn*$QV{oUJ9gjZT*;II@p8+c$We9dT~L z*$L-loSktFz}W?7FG<`LXE&TZ#NJ)=tL2iv|D%k(CA1HYQGRDXoc%|4av;tTI0xYz zBH)ATu?FBM@y9s~=kU?^BXN$!5&d_L#yLhub=Gk>CkT(ye_=Qg=cLANkT|E{T#9ol z&RK#K{dZ2sIRod+(a5uLF2p$p=X{)Vag_2a61~o9J23V|IQsC9BlE&h0pN;wb%Z za&hh&vhS&FoO_#)*!SZ+it_-@!#EG(Jf!=Po^j0Ok81TXoX1B;pTv0;=P8`$ah}F` z7U!9vTIxEeDTMO^&PzBi4tZY2d1Ww_PF}-#6X*4Y0Y_f};krU&vCT!H`Q^z!ucNOYaI1&e&T#%klzj3!}$T{ zXPh5#%;8_x{RQXO0jy5M`5mW`qd#!|#QDpx{f+ZaW1G5a3&8mgcO2ZYaK|1Mb;niH z=2LLT$Da{*0=)mjoe=jp+=*~k$DJ5=Hrz>YXU3frcN*NuaL3?Ij$0$aonn~Nuqpk= zoeFpAQJuTf;?96OokXWsU|oGiW0+q7+*t&p#NUKw$6XY64%~Th=WP7AbK%a7JCClS z+2+GtNYdxWT>y7P{A(EQ!V+3!&=~GwxXa-#j=L1@5{7w6Whng8xXVh4yaJ5$vpnvq zxGUhUjJqQ4O2a)!;wlY;*zzl|T9Y+!x4>N!x4>NsH^6P-c7)%;ZR6U5EO9!xO8JGv z!}WEQ=DXpBxCw5A8;|yPan-dCZfbIs_#3;#-4M6JT^F~9yS9*<`yY3m0Tu3gxa&7l z+zo~pHp1Psp5ktdyU74AJnH@jSHA_|Zi%}G?pC-v<8F<+9qu*)*mjVGyFKoX!nQ-x zp#XN$099od++D@F8?HJ3>owUE_dwjeaQDSk`Y*73nq1uda1RjX{Rhl4JqY&*+=Fos zm8rf3!aWRkwEnwC;vR#06zGRXFQE%?&E=1N%!_fa!Mz0casgZ_<7Fo6 z3f!x4uf)Bo@#s;1bFRg`3HLhO8*pU{(403an6_`O4cuFFqOxzpeGvC{+J+i3io@w zv2lOE{R{U;++T!B?E<(z8_ch`zl-NL!}AC3pH0+w{>J?mS8V~f!mmH;|CGm*^MB*< z#=)BiPw7A2czCt!kFThje!K}AL!uMoO(w=9c#|r>#!QZfvCS5s*v8-;gEu9fgEtl4 zf_PKo&4f1%-t>6WHVk-b3(#$Q>Ma0oMl+omZ%({f@I?G|!?WSdjyH$S($2Z?=9S#J zWt^vp;?0LQ{{V@%fMH$;Zz(*{e{T`I#qk!E#KjbNq#v~f;2Hh*md0BHZyCH5@s`C~ zUZTqx&J_l^cq`$pinlV}Dw<9AxfTkhv(0|Ek0hCVG^VK6;RacP!qsc*o&giFZ8SS$HSlor-s&AWy4gS;( zQn%#G7N81EZy1#ROX-;i7Q~+!{~Y{T@HfDp6@MlC+3=UapB=xB&VfH4{+#&p;LnAx zlwUW~e0hAeBM6&p0jevb|NcVwOX4q#zZm`^_)7c-x%i9YFEQG)l$t7rr3ZfeW$~92 z=koX~H0k&&Hb|+vGJb}?3VsKFRs6N^SHoWefAs-I($_S(Equ$^ZG2n7>Sxi9>suiF9Dg1B0>3BzQbx4}m_mL0wbgXQqjmxO^<*?} z0se;g``~YczYYGz_*>v_B7jY0+zfy7hS1Q;)sQdxuh{gj0QlSD?}on}{?7Q@<16LI z-@#<AO0bN+#mk{{Dbii#24{z zzQAV0KNSCP{KFa^NjXBA^sKk7vW!ue=)vRev@?> z{%Ga*uf*5qfBdWQuhAV!pZM3|-;94fzLI_X8w}4)0~r1-__yQVihtXnPh}|l9gPS7 zF8qh_@5X-s{~r8%jsHG;t^AEgvL3{LXfPGeBQmO80AK$Kfd2&kJNQrHzl8r3{&V(@ z{(JbJ;=hmo5&j4G=J#Kr!v7fm6J1Vw^!-2n=cd+|_}}7xh5xnjDE%L5<~#iF@qZXy z{U?Gc@P8&45C0eZ`oDr-@&CgA4gZfCiU0cmkN@Wo+ust^w?O#+5{!*6=l?+T-+Vs_ z#!<*%WEUV9pI`!lNeCt+m}u}^1QR#>1d|d>Ui%4*{wrJSKS9kl3&9wI83?8%n1)~~ zDKVt~3O_BubOh5koO(@y8P!zvQ*Qw?>yVnxN-!_MYy@)>%uX=+{2$CEDRUFdGw4>@ zn@{{o{|OctVq1vdLV|?}HYZqwz$aLgUh6MEnQerC=Gwqe9CP zEJv`suGoBAf)xqc1S=7&MzAu0y7MPkMWxgLjai*wErK-&wDLDmf);_+f8((UT!N07 zI)=g1gsP2zphplAg9E*zzL%`;22NAxM}k`af0gLZGX7#ha`+F7_$!`23CAV)i=YwtzX|>!_+P_G@b7?} zP@n$^$5x!-IGQsYj}XG~2`3W&1Ts$8BoaKSiry!h~u=Y$T zxnm5o(*Gg+GzLE%>rY5HJ;jTJGtfPda7N-)31=dji*RPb%Lr#7+>CHm!j%bUBV34Z zcEY&{)fPZFr=gl_h<_f!c?m`KL$w7+ZwnAEs4>l_94<__G~ptIOAsz9Y>N>t-r$GW zmLyzikVv=;;qrvbHXg#|4F3wkup;3~nnBlHg|Hy3AIc+KjnE=oop3F}H3-)nMoN0i z(6$LXg!TYH=n%StX$>Rv2~)y=FeVHMBOTRGmk_GGKoN?kwh7f1K$tgv!jf=(!ium@ z*wbJISesC3KB4{zfKVO&O>Y|zirR-85^kjYrV8OEgqsd35^heoKj9XHI}6*Egj*5r zK)5yGwuI{bzsV)sj!?wkbW6CSq-gyYdl$kz#n_c_H^QM`e#1RXZ%Y3O_a@v|jD6~{ z>4$K?#wI*~@OZ-d%XTQ?K>|D2gbp!0hY=n_csSvaghyx+#e5W@691vj)%l-LwgB-H zod<6>McMy9O7va5xcN5+-j1ky8ur2J@XvzbE`*kSNuEBK(z5iN64TX`+O`5&l6a`ae?WPZRx{XdJ?S z2nV0wzeHmZ{-+zRpDR-0ud7Gn4%y=qO+_>T(G)}z5=~l%h$bSMm}rtgx;Q5zQf~ob zGsGaRMq|XUHUfj0ny40bCH_Ry5=}40bPa%L1|m893t^o?G&9j`f|*6eSq*Y_qB)6_ z{*UfwZlc?W<{{dVXkH?RXg;E)iRLF-f@lGvg^3mvs)Yu*M2iqDCgm2@Y^uG*hwLRK zMQ;H_%Mh(Zw5&LnBU(X>hFT8koqk27C>}4(e*@E5M3?)D`mW@K@y4hN7oWvH^>#L8;EWe;&!EdS&l}IAr>f8_#Pbr* zN<0^_+75(gcH%jR=NvqO@y{*MdDK)r*L=iF5zkM&81Vwc3llF$ypYb)m_>+<^6To0 z6E9&Hl=vHaY2p=#mmyxR_7JNrK&puNYkNiFmBp#w0*F^pbtS5I0pj(D*KZh_k$6Mm9f&s~-jaA@;!TM+Q6Z^PkHni1 zZ%({L)2HcnE8=Y>y0wgY7a-oQNhCJAK)fUI?!-F@Y-i$KiFZ*L{S>=3hD7%u-j{e! z;=N_Mm#HPg;<^ZiElMLw+}GHcM?BBd>8Tk#CH?lD_Qq60OI?Up*wkiSdRVi zgNA45{2xC`{1owH#7___{WloVf8GDn#3K9gGfmVmKTk3n@e9OtlP?l~O8gS>JH#&& zzfSxL@v8>;nlf}hZxFvl{N}(@8^mv$=)1%p6Te6NL0yaZebdi}#2+=7K@Y@w7a;zO z_-EqJiN7WOg7_=qFBMGp|26T5^4Ct{?}&dS{+{@U0h{=L(o==`h4?SxUy1)9{*72E z|4>wI2LliB-?dGwcLCymNow`}k7NRpu}H=t8Pfk`T$1s0Ze1uDzp+UsR3ynnBojA< zNG2hfbbyrTg= zA~G)86cT%J5~b}VOOPx{vNXw3L(ydhwqTYcS)OD?u~*O`U2bKP4#_GcEs|A9)*w-@ z03@p`m~<#p^%g*~R^uVDWUBOE47~-AI3yW~OA?WIBtiXXBz}`6$gr_VViM8+#OQw_ z`Y&AxGAB{uZ`QLS`GcfKayLnzSyhh!^~bxAfMS&w8xlJ!Y87`>z$k!-9z zLP)YH$rdD=k&OENSL*7w0Ftdqb|l$`WP6frNwoM6cu00I&$1JVl6?|=|6gNBb~Vx6 zNe&^|gJeIFJxTT<*^9*7{OeC)-v%rs`;#0*asbJJgIYp(@DS!ulA}ouBRP`fa1wL* zquG@HH@PIokR01gNsb%xpFnaE$%!Oqk(@+wI?2f-r`7Dl1E6C;FCNm&c}v0pCEaXD%8VQr9nMDlS{*Hr(MU>rD}e7BTCsm1`IY2HlAmSz(@@CV|0lmmNVWjY^C#UE zN&cccBgx-%CnNcX?)W7CqdN}CzjSNa|8In$>~l_7rM2r^UkGyY`RO(U5@UObeEyK6y2qVtJD~}YLBR$bk+Hvt`UD_uSB;;cV)T`-Bswe z=&nk44S}sjSM*;$g@}Jwi@yLw|GRSj@7i=bO%>C;OE(snN7tttiX99vbfdsUE!1{Ezqq{cU&FQW~cSE}C(p}Hwu1|Ng{&zQ`yD8m`>29J) zF!K-Cl%6bHFW;(?nZYH zy7Ci1Q&D{odzwD?rn_IAMRy;myKloF_WpDaP%!=39Yppd-GfQbqI(Ew{bfFs?n`tJ zqkA3Q!|9$&_XxTt(LIvxF?5fjdvud)7>=cT0^Q^29`>_ zVEm^mTX%9M-Lq?(uDSp3YVjB6d33L!dp_Mu=w3kgB5}$Vpi<=guX!$|d)d(Q>Ro{D zm2|J6tF{2TSJ&eZ=33Lw^>pRj-o1hDjdX9PdlTJTB<1ENh3>6%N8kT<@1T1Z-8(g* zTK2o?n)`p<)qQjyqkBKy2TZL8={`dDA-WF_5~a|igWl*qPWKtQPtaA$PglPJ(0y8^ z=x@cdbYGzR9Np)Kc?ADrLq+#xx_{7ph3+SGU#0t|L|>Cp?E-Y)Fvz#)en|Iiy6@3_ zhwi(YQ$NM~bU$d22LF+ye>`x~{gm!EbU&jj%HLIg|A+1u2LF{ZRK>52=Uciz(fy9@ z590s6@r(VV!Te13H@d&j{dM>m>5BgAb@-EXEV_S5;@@=t72_Wn|JU${{a?dCs`Q_9 z9MTC%$0Z$~RK&k|(sY7BA<~IRCn23!k?828q?2iY_CT7EPC>dPX-zvD=@`-(NT(#7 zmUJr8X-J1If0~|CrT?VUH?(4_^FQfKq_c=Iv*~tLh0(QUCtZki4$^r^=OmrW_~#~- z!@rQ%iKO$9E+B^1f6@hqcorsIj8y4A>7osZ*o%`cp{KgfrARH(rAb#LT}Cj=l8Wr7 z%MFmE=5K+fE0L~Ax-#i%q^ppszXhaVy8qQl)n1^Tx`f&SNLvQeCJjh!QkPVI0#J|R zG%2K>fJYAhG7U*1(u6ctFiqPfO-C2XN%tZxNVg;{N!KH-NY^Iqk@iO;*Ad!vo0i00 zpL7$_4M;bV>4rn0jT@VEQ_{_hy*a75|IyFB73mJ7Taymyf4VK{cBK0M{582dlI~LX zL#nm_Qhoj>-IY|yKIv{vx1@WJ?%CKTcW=_;N%tW=oOEB(gGl!yRkBaIzeXws{T4u4 z>;It=)xZA=zrF<`J%aRT(jx_M)KK~{q{oT#*m_icz2+y7%4t76k@O^?I+^s8(U{XD z@pKu_AU$(HE1t8->aW~6q+gPrOZp(`d8F5no=+;upI$(Ep(50)dNJu`r0RzNNjLZZ z>E)zXkzPT1a2kE4@4n=P#y@&J;(z^s~ zwg9!xcQ-K7dr9vnRfm5~qM{F&=tHEhkUmWM4Cy1JPm(@L`gn~beXPNgKB2%SomBRM z^l8KJEa{7+&yl`BDqDaof{DJQNEF-4hV50-_eozPeUsE&{-gYO*=VrXib! zY+AAzgj2SFOm6{XGm_2JG(a}9G6tV}rnUew^$I{XyMDTCPO?SF<|12wY;Lmo$mSuN zcaT-X$mSokLAD^-!oskS#^`PrC0l}QF$pa`lCEkk*-XinCfkQ>8M5`smL>DamLpq@ zYVv_*Z@IC78X9e_ygI$o3;UiEMwe!^mVK$POesgseXQ zAKdVpDrzGz_Tgkl3)>N7N0J?-L;5>&4B7Ey$C9aCU_e540@;b9ktdU#M|KL?S!Ab@ ziR@=;3#hZm&LA`TuRXQ?pJRGBcR)^dKG~&Y7m&&Qe`e1A*~Mg9{B;{@9WJXA$;|mb zyOQiava85$BD;baJ$Q~qngzO=*hey|XR8OTVGT95VC(LR*MgAh$)8zFR z{u%Od$etzpg6ui6cgdb7dyVV`vX{wTR6J@0WDC&tE7I7jhV69$yg~Lh*_&i<>C*bC z-_cV=@*dg8WbX@Jy#kPZNT!uvKcjMfLiQ=yXH6p6=R*u%lKo8f71_6v{{ z{hsVcvL70!8WpF${~`N@>@V^BO7(tNVt8!(yL4$O1?O;(50MqoVul8+_1Lsvlg z*gBezOTIYyc;qvZk5B%8{jBEkqW5}l= zpOSnk!!Wfngn@io^6AN^Yo_%`KEn|6Oyu*D&rCiC`7GqK)gf|u1<<8uH#~Ea&rLqp z5YIfy)>Y;sUzmJ;@&(Bk7{ZA7Ys@0GpL|jB#hRxu&$0yhTI5TTuRy*O`LY6AT1NE> zAT2E?Q}rTXvQ{KtoqQ$oRmoQ-*Wz#Rs|_L5D*(BOzh-NZ`{Wk6(tPr^jJ9ERWa^T8 zwV|A{6ygjT4|zm>Bza7}C3!-=F?pA~N3O)5JR>j3bMj)4TN~t+CRCU{`Fa9gn|vK| zrTiMKkn5AHGe7wT13&pj4S-z4Uqxjv$TuV3oP6~8Ki`Uc7xJyicMzU!$hRfmu3;nJ zeo#xIJCg6DLW)!E2-5AYzFr(*t5eA36+m@$G5KZWmylno z3H5&_BL2GimE`x6UqyZk`PJk%kY7W79l5^zk)=@Qf3tcwlHW{zlkym+U~VP9gIsL{ z^&j%vn<)96H+e{$sZ(FQcwO6`NQOoH249M+?@aOC&-^6 zf0Fzu!}+v=Nmu00l0Pqv>HB}-e8C`JqNx9qd6{A+@>j_JA%B(pYx38~KOlddT%GgD z-ynaJe6;@O?~uQ1s=P=3e#2=zACiAg{t@}7IFD|Azc$ z@^8t1AXoY?u><$$uyRP2u%={?X)`>0ji34?N`mqk#NhidxwJ zqZo%mZ3Oin3a$TQt5*Pu@l>c@kYWOgNhv0zn3zJgfTo-ZO`;1GlS#_tO^Vo4P)tqH zkdL95aws&F$(n{@dI3)>quv525(B@mEk&^=#nKe3 zQY=HUBE_;4%Tp-*SATTFD>OF6N)#&_dlgNkx>EX2vAT>({|8klQCJimiZ+Ek z0+2PKP+NfX<53((;Ztl!5m2m45mICn5k;3GRxnja|Nbj>YMRU`)}|;ZdK4vv5r6#% z{icMZtfOpQaXpI7Db}ahNJ1M>sExoxH>TKB8q?>0!E9zKZb7j%g*yLJY}Gi`sHW-` zh+Q1{4x>=YPjPsYCH9fJ2jxGS;us1g{>rIW?|6zEC{Ca_ zkK#m%vnfuZIF;gLNtY`iy`HC0oJnyy#Tf%mLvq%@LvfBIp4(KRIG^GwiVG+%rMQsd zVu`AE0Rzx)0Th=}i1@43xPs!!1~3>YuBNz#;yQ{U{VzoSb%!@n+)1JIpW#7>fHT^!>ki*oP<{5sdj2K;hNzzv6tH z;yH>ZD4wQxl0x15sF036L-A~58_)BS^@4)wr+A6}_Y^Nv{Y3E! zuT%U*@dm{=6mL>|MDZ5I`xI|eyi1`jf(*}lL!2KpHpPb~`Z2|q6rWJY{ZH|!@qbS7 z#el?Qsa=3V{|Zd;Ek)hccND)+)UDQi{y?FWe>joi=YfYp{|Z3yd+nt7!!ZBZq)_}# zSxfgnl;ctSk5UOf#lJG@^FQU-l;h|Ub+lCauhYx%6|$V5@lZ}gIR)j!l#^1LR{#Z= zj1ocW^S?>2L(@=>p`40xavsyke3T=XKN4DyauG2WqBP>K2p6SXT>Sbi zfN}}SC3SDQtEDMdp<=uoal=}_jBE@edNQ3k^AHyE))gO4e@;z=4d%9Ju2AZvrNpj?}> zr0mI5Ujb2y{*UygwgAd?4fFbxn^A5+xv^wzNU64iCMw8HDAh(_>Ta$K#h~8;D7T`# zm2zv!qbawc+?#S+%H1fpquf!D+sn9vN>qLBM7ay49R9UOZ3;~ZN+tf3drj$P z|Cjqv9!j|{<$;v@3ETdZ2QA%T3mGUgg(^`9)$8X%GW4wr+kX?4oao)ly_3zMR||dcaO&3NBIcl{ge+%)cguuK1BI& zQ^j=nDCOgnk7=i(eS-4I!BiT1n(_t8XDCJR%V&jiHFf8EkG^uN0gsaeoUz}pK|0afYO}*%P%Ou zru>rfs~R(4qx^>QTRqjQ`aPx6dCDJT{E<=)|2q1MIDZ|GQ2tI;f5ZQvszvEfs#q5={}FuMq|$s!{VM>K+722Ls&S|$q#Bn>G`||p_(lAiy4A?}pK21SDX1n@ zgwQY97f|dqM4?nxAT6@hl+Yf-=e#kcuuswFK3oR9g8Z zy7+*TYDuc4sMO7mcB-spsVb`FsM=J^Q>{j|0@X@XD~^V(OtlJ?zWF!ptxmO;G$wmN zW%R#lsa&s~M?wQ;AYhnD?OClS(VU z!R$kIAl1H9`wQ)U4W3H20Nw3DR0kXUAWT7QrkhDOLeJXxSZ-r@fiKDu4*unbq&?cRM%47AXBCPRPqX-7vV-K zwGlKaRO%H`N1F_fXwOb+2M*NL2LxCXq@ug6g3m zo<}78QL3k?9;13frjHK+o@{ui)cp_DGb*GX`8le0sGg^KmFfkFzDV^l)k{N|R~oQH zU!!`P>UF9&Yfh>+4D(w9d;_L>m+Dih_ozM)IhQ(*GKp-q`fUqc@Ji_r}$L!Fu*4pf`rzg!Dw}dlS){ znBF8Ku$rnj89nI9;lHWXn}VJZ$>wwEO)30S(VK?e)GA&4;#BuP>PdUk)0>~(4D{xp zHzU1S#5of^5&seVtn_B1r%(PhreUKuC%w7oiRSm_Hk|X)o3F7OB)tXbElY1fdW+Lr zh~6SnMePe>EJ|;&(fB3kEk$oh?NqC@G(COuZ?cx7w<5je%~W0i6mlhctI%6n`8EHl z^j2$Z<5`1VNpDSh4!yN%C%u-87CoC@Tfrn(+UuC7aOtJ=JbE!bpPo{FdVxkNI~uYR zdR;ZuJ!FkdFQ+Hsul*Ih&FS^%txvCCW9Y3-Z(VxpsG|Cl)#5MF4d`t`Z$o+;8D`Oc zjoj2!G50^cE$D4WZ%fJDirzN#wjN?u8-d~3p589>cA&Qty&VUBN!;0BcBQvFy&?Tq z4ew$4+>72-^!BEA3cY>k9Z7FrdI!_nkDlE2^!67v*#gve@1TZOoQKGGD80kQILvU4 zod4+^MehW9M+@K>dP?@`9or!5k>2qp>qH5iRFC36+4xVTcOkvg=&92_z0>Kb7XcGh zTL8VY>77UK9C}Lpn~;#4PwxWl(W`wCz02rbteh(G5_($v4dLbDze2_<6-+gGHNB_l zT|@64de_pso!)iyZl-rVy&Fv8jr2yuU(#=(cWV=sss3A_^zM-9o%GbrKfSv&Mt68G zy$9*tSBE5eKRr48>*z!D9u@z?GCrbUs>8?VJwZ?X_}j42dy?K$P1Javq4z$$XX(90 z?>Txe(|exYi}YU5FxAXU1G_fpsV#t>eg&ZSI=y%3y+KdOK0UP;i1Btksz0iecj>*? z*v9h#y-(=L<&VnxNMIkE+)tZadg}a7?{nk-lKye@zM{Vjy|3v{PVXCff6@Dv-jDRY z6Y%#Y_XlOD>Oav_2Yz}#)B8nH=?-iC|3m!h3P_NDDnr|U)33GtANpg{t4aQ&CtE-h z?T^*K>XH69^v7*DHFJM_`V-OD=YRSWYR>+|^e3f1iGnpf^d}qQf&Q%Yr=ULr{hC%u zJ^eBCr=+iM{teGG^rxdQ;;;LeUWK$hqa@Bme-<%j*1hTIZ1fkRKRf+->CZubF2T%c z`k9-)+68n8JG7;a{cbbtveow*ckTz4hp?PrpxJ z$v*wH4RT%j`fvUiM8{R`+{ zIB*K##X~(@O8;tMxQzbg^p)n*SNbo=tCXSbYb127jMpg!{Y|)m{{8fCq<<&sb=s__aFr1?Q!=Kk942@yv zNroO}=y8UW_-hi??Gq;JDIs~9A${^U{^uBajUj#hXXpiiy~xl@486k8ScYEKg!+nJ z?ejDAIz!_G{{};Eit!dh?=ti@L+|Jwbk=(VS?@FS1w$V&^s%IT$dK0mI)$N67}9Tk z82XGMrTmIY^L)wBH8B|p62CbQB%}Q(L#zSis z&8#Y_5kPD9#zSjPTFcOyi`JsF=B712t$ApvzXCG3^BK+sXe~rb4FZ$9Fs()U$l9Q_ z7_FsfElz6*leJ_YUmLWRmQ_Z8!Y@l}MOw>=QwBk61x480*w#w4R;9JFL|3U-^-pE3 zMoVcvt3%_bzywQ21_YaLpf%XVE_>(P<}e`|g5Y|wydZA5ERS{u_+Q(&O(W_qhi zY(Z-~T3gcEhSpY+zI8t;+igt`+tX6Vep=@D-_}mD-C5yv=eyDpJ#XzsYlxOD0Hy!5 zEQ4v&a^x~QjYp!ciTbo+@pNhRXoX@2CK@${S`}wPE2UM?%4p@oA-Th}O4Io$S{KsV zoz}sUwFj*|#n_A1{m=bZ?|)h+(>kT;f!3)CtUEcK*15FKpmjE_ zGiePge+{5zUjFNAKabY=v@U3P48ujVo}qOytvhL5LhE{3m(se5)@8J=kRC4Y<7r)K zdbpaFdgnt+{T85{>ME`?(Hm&pPU}Wmx6rzY*3FIIRJ@heZG#@ky+hW~26Gp!M`+zm z>p@!g&=T2i-D{%v(|SNN=kwf_H0>la#o(fXCv@3el?iHi0QTEogO*YdZp z{Xs)I}tU7TjtZA{P7Lwuf zzih#pPUUL0>9JjUaSSN zl=x%KkF`MKHzgLrS`=$xtVOh6XDx=cxV{kWSrSX+-C7E3X)L4s)-qVj4(3WB83EP` zVz1alu~x?FVy%L;71pX)8(^)5wGP(mSZiUefwktyifi|2vDU>}A4|Rb?>lQ7YeTHf zu{Od|%8#Yb|5%%14U4}Zw@`@+qksR!+8S#JYa6Vcu(rk80c$&~?KOW>Na58i5Qd$x zcE#GI;StYn19l6mU2n0J{$trHq&nbAhrPqX-^EfQ?%dd69$Z|3Ztdk|z zOabdOtn;x>$2te=3@oMmSZ6kzSZ6Ck__5B#IA7h+wEby2^EI*N6P>E|-6 zJFqUtx*6*Vtn09@#JUFSDy*wVwxp1^u? zWZkE+KEZkh>m96Tv0lb{t_EN|kEN6!>jhKgC9JWUQ}_G|*6V_iSzx_p8hZolZLBx3 z-fD97s=I)W~>jfKEnEVWY(uxzhZrcH6H78tZ%Ts!1_vZzig0L zUn>$_JflFCGBajr@}r5dur^>vFq&;*wbRq zi4FG5*wbOpfNj3m_VlWRE~@k&d#1*Nt;8RDR_xia^^d>mR@ieWyiS=5dm-$(vF8`? zJlOMM&(}l^MvVaM1r_aZt%b1{!Cp*4i}vx@i#HhTC9&7UUJ82!?4_}n6{MO1*vm8+ zv1LZsO8;vT>=m(B#a;<}WmA2X0q|*Ti6b^g)LLS*7`3g9n+PI?PGfbY+dYL!(%WZc7h#AV%$f{HpR}c z^O5)x`v~j`dw=Xv*!y7bj=g7%!QR7g?uD(DzsbekR{-(|ps(uy?1ROrMgaCf26+hf zVc3T@TM4Q2zlk1+eLVJ2*vDcYZJc@vU>`S-bprNj*e7C(=G*%HKlUlur)omo$?4c< z%JrUM2+zVkdnD#u?6O0PH)k@5COhq9b~^ z8~YjTd$7k~-;1r(9{WCQ`Qsl!Vn2xeF!n=(x!7h3*pFh%Q-J*#wmbqDe(Wc)pTbs8 z0V-EYV?T@iGPdZy{XF(d*e_teI1)3qUkm${+QxnrTc&{hn&Ei^`^}MAZ)5+A{SNkL z*zaPiLq7I1oeJdj{IG(4LXDR(>gJ9s%03(w>9%Y_w;GsEh<{tezb)dg z$X776R-(NY?UiY-Mtc?7t19y0wpXXUhTf_y{S-iZZQAS6UPlV8+fSjrKJ5)@Z_xJ$ zV54SBdlT9v?M-R7Xm3V)JBe;idkflI)83NyR{hcv+J^SFO|I#7d)m9u-huW`w0G1Y zX_)rT2BXBE_HML?M&??y1KKuipLUzJOS?nc8N}2Kv^~Sq6&@J@x_9)tWOV;kP?m>G`+Iuw^Q*j^KO7>}+-+$ZtD}eGGU@!;K zK3qI95!#2)K9u%h3RZt=&3`ZLBWNE@TfG9JeUuI<`xx3v_Gus6IB6eG+Z_INwXRD&37Gb13Ee5{U9|6^eYb*XiMrb-Xg^K+N!m~Kdy`I{q5bSg&-1ijru_o#mxNP23kY(oCRCUC3hmb< z`s#pF%>qHbN&9`;Z_$|REWSvm=(3zOdq;w`xTj@%HJCkY7&J+Zr=uC;X zC!MKq?xHg_opE%gq0^x=EuA&!Kxauh)6toiPMtd^o$2Y!OlJl%#QSmHX+jR7=0Cbf8(^861$5L1ptG8+tE;Ha zT9eKebk?G?A)U2N);e_7rL(?(*VACt?FLPj_?7YvJT z=v+p}rE>@!k4{X-7g(20NT(;5V4#W;|7J@kp|cmAlurGP%IK7IaylaZ(y)P5I$hm| z-RbN>XU{&N)Y_ZQ{&e;cdtW+g3MhcS>I3K;B%uS1M~Q!fp>rsm)94&VN2xlU!|5DB z=cpP@y%U5%!5C!Krg)FNUZwLI9j*K(`lf{5qVq1Dx9Mo*H=J7k>n)x4 zaq9ovKESDk?n631)A@*w9N;@2)A@wX=R) zp3V<+eiVCrgP|jj0Q!#of-@1FU+Mfy=Qlck)A^mwpLB*t0G+>@M763L@(-N>{qM-( z-Tq&Sm{ZS>!nqQR>Rape5(OpP;*aw^ZX1JUVlR>P@zmcW@F zXKtJsaAw1q5oZ>hnQ&&-S1ng0Rc19jv*XMu9z6wcl=wGzoOy5-!kHIm0i5}8=GUR- z&N##RkFzk&VmOQ7EZR?(K1Kg^&r9O0jI$KZ@;FQ5EQ2HZui2KxG5W9ZD@bE2;;i)l z^e=P4Q6oUAtd6rG&Kfv!)OXgD#IafaXgi$}(RGyL~I;=C2-HZg9;87;;g^=gXV+1NOD)^alXL$07uUM&WAW34e)=0^BIm3f5ZHFQ%jov66ZUduW-J>`Fa4O#)rXw zk24-eUIA$p`mqTK!_PSX;ne#77tXIZzvHO$f0K^$2hN|GO6UHKqs~G&|MdMh|LR)q z1h^B`e%uK)gF7+qq~e*xcqYSDQ$VFOobHskv*S*MJ0tGYxOMt8xZsNZYs_>FxL$Fm zSLv$C44OyTGvUsRt27^XmI1&12>^Ev+=X!G#GO|#bK%a7JC8={D)ZqkAkp~;7zRdw zyD;t|1EIxm+qjG4u8+F}?#j4J;;L6YxJ${pH12@@yUXG(FMd4*a7F*!6>&%CKkh2H zYY1{x+|_DB?A4W_TU`@(E!=f+*Tz*7p?`k_sec8)-2iuc+zoLz7ym}M8{=+@yNOCM zS-9$1K<@1pxLXNwOXJxZcU#H$4(=#i2RFubaRXdWWhtbO+r{nmY0Vu7aia!fJPB@!TS!)hJFNfWDRHYl3GVK= zhvDvlyPrh&#N7*bAF+pj1;E|6Nx|J8_aNK@)K+z6&j0SgxJvnP4{4AC*LXPY5x7T7 z^hjCNvw#>f0#w$q#&bOG&$uVxK7o58?v1!7;a-S)GVVFJr{JE3d#Wm-KdIAkmF(l{ z_dmF2;hx<@4d=NH9``)l^Kp&%>mDw`y$1JU+{=aM65LC1)f73iZ?tRK*_;F6$Uj0aK{)Pb@&&L(tqjyN!)R`PvO3T`!w$J5`6|& z#NU0c!3**Q+_4gU5%;COUpz0Xt*ZVi?i;vD|8a*O0dU{MeFs}>eAqjnk`wi~rxL@La(OjVP@RiBczXITXi#uLYzQg?< zcjWtj_eTl+)MN?6FL&%v8vKssV9TLn@mx8ljBV(#uO$x)c|rDyjk(4#hVciJh|20bPWJ+dPx-V zA10qkoHOGMh`%=*o>F+c+41JUn+tDFMIu>vbF0$2w|Vgv!kZ6of!c#Nzwr-xCx0T#mn?oGZc8EBveWdRTIVA zU7UMpuwvVb?ml>X;~$T=5B?N*`{Lb$w;$f=c>CjthIXx#I}klyJj0IwcqfVHWV}{N}Do^g{n2*A4+ z?<2hX@Ls~ZAMY`|2k^$=J&5-(-b0E(((4t^y#M#qIB5KMkK;Xy_XOV4cu(SueE;t~ zGtlRAcrQo~YA!U)c=}ghys>!W@LtAy6Ymwg*YI8)sPa1A8~sj%Q@IJ%)67O@oVeyyTukf_;o7`{lzH1u8`(7FP zZjZF7&@U8p9QA3|JEKnH3IO|j4(z2!=FH> z*PQ-D3gAzSKWXj6pQJ(JPli9a&T2k%e@gr<@u$LH9Di#3x$vjKp80=;m?6Td%r8`WX@)bKR5pT_-a51!@RQ2r?xtM0sIB= z7r|c$Ux~l+>(HY3i#2xR$6o?}E&L_%SHNEiUui!6(k8kL{&M)ss;%(gFR#qm*Tt79;Oh~9uk_#ayb=DU`09^8 z@i$R^-HE&i@;ArdLWA`+ZiQdsZ;fx^Z-c)x{T>?~cQUnh!B=XJ zzbn2z|2Gx!TPEGc5Aoah9)1VkF}b4ux;G!+D8JvsH!uHnG{VpDWBkN$%KIPbzxLqg z_=Td?S5)C2hCd4bK>XeD_r>1>e=q4%{|bO#>;FCto8jCKfB(J*|9}BoMu2}X{vr74 zDWEANgfa;HBk+&Gm%-s5g@1G(P=oQ6{^K8~oVvpk=+@u-6Y(FzKMDUv{FCu7#6Jc9 zZ2VL4&%jsukAHeUOSbYX;Gbo9&cQ#gw(-wxJc2o2Ry7MGbP@iQ_!r}=Ge7<%_?I>z z*_yxq@%0G6zY704NxT~W8vJYf%#DG6y(H=>fPWMI?c%vv)>~w~Ro2_;RjBU3e-M8( z{yq42;@^#bm!_2)BA9#e@5jHd@5g_jNf)YzWPKQa489hB$r{jq|8e{;@t?qd9sf!E z7xACMe+K{Q0iI{^%pgi3P=uSa*Lb~b)U%D~^x)W=*?xb|p;a@_NtE`5(J0)G{PDOVb2~FMj z#h!M+o{sMSp{xEcuzpdxGtym!?o4zSq&qX+x#`YAclH`UcUHQyDWvI;?i_UIl+auw zNz@3SEBfD^kM8_*7tmR{!-eQBNmtJQ-9-evDBZ>BE~a5BeF7cO~%*>p$I9>26PVHM;B4Rfm7NYtUU=j5X=5HITc`fW02w z&FHRAcO$x@|0;1qQ)Oeio7Og683Dte!sc|hqN_##-7N>$wx+wSIJaq>bcg>0lJfmhnF8HRE-=?A>S9Z}yVI>q`Y2=UL3c079sU)V?%t-ied!%ScR#vc z)7_u$U33qidpg|%=^jt_AiCKifbuE{gYrmZCjdZV|doA57>0T|!s~QHeuW4+$*U`OxfZ+z?zlrXx zQcm>0tMp&Cx6!>r7;ZPUM$^@AevIdCy06o{hwhVf@1^@F-TUZ1NcVn4qWaXo0@Hnn zu9AJa`v3nDdyL_E%-|oV`$Xduz*BU`(tVolbHerv-Dex5M4zYoqWE9XDXQX23ZM!p z@u&L=-B+6^UG@IQ*l*DNPylbzeT(imx^L5cS3K`DFuLz4L$kdvp$`T;AJP4c?#GRX z?k99VZNSF!Io&VlepPSjeyKzHKbCLkElc-XdbKcqN4M_wd%C~V{ei9$e7fW5{@C!y zwfs!?SMmR1`ZtdN>Ppq&pYES@|EBww0_ZCLCn`#hGZyI{j31(VZ(Y1PYmeGI3FoW^WL~lNNGt--k z-Yk+bE4?}B%|_20{+qkqQ~GbR<`$%ge^3AMXC0z9KfT51EkI8MzqcU0g_;zJivIT& zRXmz=ae7M$l^Ox`mNfiJ(_4n#|N6PczZ|_Gddt(>h~5hHR;RZjy;bOm{`Us-zqhJN zQ7x@za@U}@HoY~akm$eeVI6ww(_5F`dQDdbzX81sM|w7^IbK$?z2TNrf1RX z(X;6}^x6Vb`rlB|bLsg~$kXKN4s;tHdO?Gv7YZh7F!U07d(unkRrE4?g+%ivDt2j* zqv-8HZ})!4`1hi>AHBT=ybry7b?5qu_NR9cy#weSs1vnciN9eul-~RF4x@Jmy~F8U zOz#MKr_no--bwV1qIWF4qZ>TEV@%d@^iH66e4nQ_=$+WVZ}d(U&ndE=s$lAdoKEj- zdS{4J4*$Kgnvi(Tp?3kjbHzT7o>u+=z=aaJsPWLdgx$jBCs%avi-}=v^<)8|d96#*GT5`c&dSa4omeyG?l%mC^s+XnN1lyOZ7+dUw&g zPoj6rdJnyO8@#aHPwydm4>TTn4=O`{5D(LPWB~any(jA}Jv9R8Jud4L3ZU^%iRWp0 z&(M3e@0Tji(|euX3-n&5rv`x_Uy^lfgQWM0Y+qGd#cv(~l>G+1H|f1Y?=2I3TN%3U zyY$|pH?G+>etI7eEKBc0f{EyTMDGWBAJhAs-X}sX`mdNjGbCTo`HS9UCwjlsA$mVIczS9O7@prHr1alJ|Dsom{NMEcF`oLv z{a0T_b7{c@4W3{^%@a&aFgw8{1Q1M0Aj%(1R!0dY*F3?L1XB}C)okmPU>btqlfQVT zBbb?>4$Vj~J%Lt!Q)MQVE6o$kLLh(qsd#1^@XtZ85W$=TBKW~vLOZu%n3rIFg87=Q zw6_4kg8i+47baMOU=f1F2o`P1iGT4vj9^KE{}C)juyh|FY|9K_mLu4iV0nTK305Fj zgJ4C1)d*H1SVh2Q1gN{TYQsaYdY_PBO@j3Z)*@J!U~PhR`XNf=!LFIl*=WTM%qbuqDA(x?z1+w;|Yeq-T4A9SL^mSF8;J83C&9E(BeI zT?yJ!Za0D<0(I;sP`?F;(;m)MDIEfbKxsaKehMJ)ReQRJ9zi0}K-Q2TB2Xv)J`X`k zP)IZ*7!dzJUj7G_0&BM2N$w}ugXm;}Jqb@E*o(0K;_Xc^hF~9pO9=KQIDue4f};rb zCpd)Q0D^<$Dh||jRktz%)TJFta0J0&1cx`**sKIc4uFp)IF{g;K7c@-{|Sy)7~R{6 z1ZNSPL~uGm-QKAJI7O!@@M(rw^gmGgZ#-ucTu5*Z!TAK|5~!1ZzgBG!Twst&{0T1Z z0|+i9xQXC0g6jw_C%B5>3c;wMph;B9)dbfNT&tb>)4X17RaBk-35@;+Hxt}Va0|g` zf?El0m#B;Y)yy3#OBlp|C&BRhAA)-b9wfMzKpp!D^eZ3&efXEld5A!t{0T(=bw7_1 zd`|Ef!K(z16Ff`s1i@1TYABdH@U${i8_zUOg69av5?@Cm^O1RoKo2Ztt07(O1bKPC9A zA0_yL;1_}~36#7Od`0jz!M9?6W9ojV@P?4!2ZHegKh;qJc?8fm>Su%hmEb>u-w6IB z5d9BC|26C{f;#bU0)(DA!U+f`Bb<x!2;riHi;cuAK`2iFp+5f$ za_N2*!ezv>Ea7s5%a6=mk#Ix8l?c}+T$ykU!c_=Y6TH@cvGoWbTvN7dDH6F@!gUBm z@WXW_q@Mx^hxK3l8xd|yxFz8xgqw-S=zq95p+5PWySEkLHiTR2OBlYx+YttY+Y@#O zcOcwFcy=V*sW!yk*)Z%%*dp9boI@&Vz5|37p-rf!gL3No><$gnJO~Q*R0D5m4*DI{fRR>KnK( z;r@jC4LcR`0K;<-;W2~<6COc$2;pIbhxT)8gV0O?m31WHQG`cpDt#5l5}qK{)lUF~ zG6IxwBH_v6KgrZOh49poxu+A=|E--t_%z{}gtri$MR+OU*@PDno+Ih!5}q&2=QX*6 z7Z6@J$RjW{0thcLwJsyPmhf^yCHsU|G=8zKBD|VVpZsf&kY6XE>j{U(A>n+8(7gH4 z{fwyrgpVqi`7{Y17pFS^6Fy0(4*yM*@EO8S37;i=i|{$ZmkFOIe2Gx>U*TVDkdiyr zWXbtIe3kHZX+xj?3Ev>p%5RWw6MjJWj-(!!jA;`G2thDzm)il z@DIYz34bK~g790yFA2XU{Aw7cx;6SAen{9qd}9;-M5qq@gg+Ci2Lbg@ zefNGN{JpUa@=v0P2>&AdkMM6oMMe0J#wc4xK%E;+phA&8{42I-V)0DUfQj@JAex+L zE21fgmLi&xXm+Bhh-N05ny6-&h6qWVwn-FwI^9n+J<$w?a7Ln;8vg)t7NS|zRy8x5 zLC!(62+^EG^ApWQG%wNIMDz5s47q*;AXg3gEQs_JAXk+N5X%$9~0HTeEHY3`YXj7t1`gI48n-gt8wB>L}rEg7?5p6@%CEAu~ zH=^x`b|l(fTH2xC57ACUyNGk=0jGZdLo`I>5VeTfL>7@fvdX~wpGY14i98~IB&H|+ zfG8mf#g2&Leytizq(^{6bE3nE3ZngpN}|1pDx%#bq(=Zzeg5BbB!e0OMEel!tNo2u zNBa{ULUaJpK|}|tQ1jnQbg+i$@7tmEmgumibD|@Njwd=&oJSEIOLR2RF~cb`m57x7 zE2qjmf#^grPU^#mP9eU7=v3nR+j|<(J4Chq-%E4`(N#oe5}hk4XAzw(#yKiicX%Gr zB}C^FT|{&N(S;-L>ctIAvMwdMTyEoKrvEF5)D%!#eIKqSx|Qe}qMM1XCAxv=IwJG_ zUt?}0x~WgwJqR>NBBlRC zzY_g6vdSOC(-ZwkJSov%#1jzxP4q9(KSVmWVUYCybgg(oVv+rLBID67|LZOBWW>`D zPfk1~@e~Ts+`V`z;;A*8_DoBxG@n?%{})@nigmZ~48*e#&!|$=Ry_p}&)hH&&q_Qe z@odDy@BfMCFtz3)o`-nuCRb?ZB{naAnmZXUKwJ zN4&Lww=wD4n!4K)tG7MGI}q=voH|#DKk+WayEZ8%afrA_+#+^}E#eNbO{`x2D}dZ{ zgLH{~Vo!&Jnb^Glj{{<*`NSb{)K4T%h%@o0{Y2v2bX5|cL0l0ZMm&o6AmZJL_aWYc zc&{2myr)6#tqgrF`w|~OydUxYx{&FX_`n7u6%Vd$;zNj)_?z6riH{*Zg7_$j9%=mM z5kOtSvBW15A4hCX{;_%-FvydLPbEH?_>{)egosZgK3#ispJx(ZPka{fCB$bFpHHmx zpZHv2eeyS)7Z6`0Au|OOOpgHKONp;0zKr-v;>(GLPyQzTD$~O?LUJwfb&aRrA@L2w zHxl1006hhWZy~--Jhu)YZ#T4~N$RiVoy30=-$nd7@!iBv65m5ShWK9Mhl%eaevtTn z;s-Rt@MrOm;dw+gGkgOdC4NkbK2EH}U%~Vpdy050@zcaF5I;lwoWP##GZR0rZFPTM zBsL>Jeb6rxzhZb^mBiOHxdOjI`~~rw#PX^qeoFvv6TdS+{vPp1#N&uRAb!8^uMOf4 z4fDsupAvu4j}m`I{CU5SfWIXEk@zd(Z-~DhKz>X7J+T&lLHE4WKxm|NG2i~IR7UTljy_0 z=1C?anY^h*BKqI|yppMme;SfmNv0*4fdmp!_+&a0on9G|MKU9aQhwD{GBe36{U&QC z$!sKZN@#YHIR>)k66f3`^EA0l7Rh`h%aF`ZvINNjB#V+PNU|`=Lj7E!U8Kn(QHOt$ z#rsi`B}tYh(c*7t^-sVg%aW{4vK+}OB+HYmC~d4@*j6H0xv~2z$*Lr)4Q$sSS(ju@ zlC=!^+9c-vfAiTT>yd0ovOdWM4aV?qqzrwpHX%8ZWK)tJ$z~)wlWb11T^%Laf@Dh) zk^N*VgWrZ^Tg|4c$oW6nfn+C=Vg2t{B-w>zSCS6NZX_1T5J{_HGo9NcZSB!rIV9?} z4~cpNs9_{NNq1ycK(aSUNRkUOB8f>-l0?H)x*7zgN(%bM<~C(mZL~6Cpntre3D~G zP9r&%LzdwnI?MHKveWUIhW+TCaQT< ztqW?KJ0nB(laM?mp{GriXOy8X{5g`bBgZ zR6PqQ&U8{zrTnDo_g^sv&j0CDq|=IXYFVeLSIMF=#98OgK{`F@tfVuL&P1xu|AL&E zbcFs(%50>w4=~J0Ixp#5r1Ox@t^88O^fMpnf~514F3?XA=7mW0o1ex{x+v)o>0+c? zkSFwkwdXs4@C_)d(P6g;dEt>8d)a z@7Nlo>yxfYsx+T;Em_xYFr@1mV?9%41JaEJvmvSIzvkJ5bTiUT8< zbSu*BNVgV`I{%YyJAm0<*~+!P}Di&PXowMcD&sS!Zh zk<}q}`)svA>XYt4+9l0Nd!*{XPa4P?8qSzhi$7^fnhi1tvLG!4Bt5|4H{I-H&u1(tZ0#N!*`Qzxg-m2MPXQQg!SnJ*4pq_%MSxg7gQ{BS|kKJ&N>n zK^{$d4CzUv$C4f|o`Ls2=?SDK)=u?L-?WoSPa!?E@sOT25ITeOLeeuy&n4CRPkMF@ zAXOv4Fq|iz^QAYX|6*LE428UyRE+@AOPi3`myzhKR+_3nQ-b{L%5XuNhZ`DXu?sn2UNJsZQwLy9p>BFRVlin*?`YjOYeWVYF z=l-Sv(pvu?YHZ_qg!Bp0F{F=?KH3kFK0aVSN%{=wQ>0IitotmfdJ0fZecN9k9Y^{i z=^Lakk-khiR;Q>wUm<;sRExh#R9EzR!$A5bsnUGXw@BaCv>Nj+>3e+->HDN#lYT(@ zIq8R_pOAh;`mrt~{g8f2`dPoU6#7EeFG;@|iB$Se`Yq}Aq{HX`217cYY(3H+$!e+m ziS$3xpGkjdnj!s_^e@uiNY$C2^mmi>rvm6s{wA$MO8iY!^uLK_6Oc_!HX+%hWD}81 ztTCAy1ezh6jBJY9CR4LO70RY0o2s#mXBx5^Ambo|Y`T%r>B(j!o1yO{n@QQ4Z5Fa6 z$z~;6fNVChxyWWGo0Dw#{BOFNn{3`Xi)$rdA9h-?wEg$F7w+OJq6 z$)& zS-nXiTa#>UGI<1OzN^_fWb0}+?OC5JCfk5)SF#PswjtYyY%?+$2iYcMo9YHMesi*| z$hIKca?mfm>7Rhfwk6v^Jljcc+cy=-b|l-GY$uhdKZRWyL%_R{Ib=g*Hd#wNRzE7+ zHd&|NJef-tka=WXGQaPaiak>?lteWSj3*&Gh%6=Bi!39n1dx*zWTl4bD;-6)heUVR zL%O!8~V&LXeB@Mn{~ zLUs<>XtHz3t|mK=>|%kPPo~75>_W1Obama&C1h8ST}pOY<0rdZm#6_M}Rsq$i5_do$Ld$H^|;2dz0)PvbV_IZjgFaRo*qs zxn zK{&@Ze!=`?Fu#ybN%kw*e`LRr{Y~~e*`H+k<&Pu|pa04JAv2$dx}twIPd)+pB;*s4 zn>YWtKK!e4`K07Z^U3x3Uu<~&)Q^}+}X)9@;S)YC!dpiN%FbK7bTyYd_nSg$mb(hgP`FdpPzgI&DsCfC`O4(0 zk*`9&>R>J5G5VjcNxlyGTI6dFV#wDeUr&29@yCA>JdQNIE4I2@ z?oR{wUnr&`|CM4w^54k+u0!O%lm9_3hkx~7+<^Y)|B(MDnA$&Z{x2rzbE;@D5yiw5 zlTyg}zv-lyjA9B3H3<5jAjOo;mSSp(xhSTgn2BOqis>n2C=}CC=&RG;x?+Z=7KPS- zikYS8EEKa-%t|raaEZGAVh)Nqbw%CD+!XUm$~>~pOEI5HF^y3yK(QdjA`}ZznD;+A zcTox@{(VAMJ5%gh+Y|$j0L5;m^A<&i z!lF>hPhmG%CfA|xC|tE|Zi~L#U5cEdN0Cqj6cI%@j8V1JEHES~MW)kLsG!(`qNErl z6{|ioh0*_FPnE9v(IbFjABqbp_N6$9Vn2#wDE6l~l;Qx2gK7o}838KgV2VTfoDw>W z;z)|aDUQ%x={s{2#jyAbQt3a%aTF(raeTctDHJCf<7A36q_!>1E6G76?mt1xJZ=w_zQCvZBvGOS7B@{~kDK4WJIQ*+?RQgYG6~(n; zs8>J~!&88w9s$==+|aKp6>s9`H7IUo?|Y`dufBV?P~6JyuTb1Z^$x}Dln+tdL0NxM zM^lWaxRc@~in}Ntq_|s3+(U7n7Q((yz11X7Q9MlXsB9mh7^B-z(Z?vB z5dY(ilj6yN=+hK0QanTPJjJsV&*_k6exWHbP-`s3rxY(!yiHMG$ZK_o;#I@^I>nn5 zO8@&j6mK+!eTw%e#`W76;Qx@~V+u0@bQ_--hR-OzrBM1$@dd?KH3P+$ zrux?u-~9hLDby68_+Hi@49}003sC$-IVHu<6#r8ELh&cXuN1#i$e#e2Zx@Ar1fckf z;vWh%8Vrwo19g-CQBF)b0p&!L6ZSD0Sx!PZnd-Kj)OaSR)F*%4e>oN9ER<7I{vXO| zC`I$>cW?i zlx1aIj&k`vUaG7}xw?c_qFkABl_pBLD&=Y;k!w({MLDehlxtJ2N4XB=x`P!B!v>Ul zP;N-Mo$zl&xiRIIl$*$QQ_9ULhxMOw3zay0uePGxnsQqKZ!^eGxjm&zxdY`8<&KoQ z)LE1}QSRJlpp-#Siuez6wkR#i4y8@m9^{lNPUE5UC^Jf*GN$ZOhLkixP6kd-#h{c zvd*O(O?emP!1=$tdw}y^A-s?B0ZOI+hWWt(`(dj3oBRmXjFe+2zodMW@^#9`C|{&} zobp-9Cn%q$e3J61hQVCvGXu4rqkO*c*DK`<2J;f-E0kkR>6bNwy3$u`oANb-e1q~M z$~P(BrF@I>ZR3AuAmu&E_bJCUp?anKfKvbEkHLRT`5C1We@b=u*I>1k5m0{7I4QrP z{Fm};%3mqJp{(WoTgvY#hu{BG{y;gtUrspH`JeJ<%3ntMf1^}qe#+lv{i9xM0Oenl z|A+jEhR8vt+Ks71VgjDLyKh;D{uF9(PBLLN8RFgLqsivUPCx7FanyLm* zLj~2e1L@QCZDE_9YC!+1nWz?}nwe@|s#&P!q?(m#c0tb8BvQ>Wl3^~Yxs^xtX7s)T{cZE^slb)ur-|gFFH>H?~@}fl;kawE@){RBKZy{ij;1$(2slp;}LzW(uhG);F~_ zq}qgPBLQrzvNZXo;@M1j^c8JEbtcu8R58_7RNGT+-9)LB{!?u$tC}WKcLyq)YDX${ z+Nat{oI9K7u2e%*qW>D-qOzK(>7h;KQ+23ZDiME;^fXM-cBz!|Q}qmUNTuKW7@mac zAgYvVU#g616je@DN>*XADh1ZpzB|=kRC`dVmp_eDz7yGD)v;73Q5{Eh0+k&8^|j04U-x-3)oE0x zP@Ou+Lv=cpdM@ZYsm`K$nCfh*>#5G6x}54>td=)spJ)q zu6Wr1=M_{}Q(akmsFePjOSpzg^uM}R_n_Hspc+keBh@WbH%ZpbDoaOirMg|5xAi-x zy2EhZNp&yPT~zl7Mn=GJ#rvoppt^q`@j#>;H>XW2l~`dX(x(;dzYeaVqr` zpuoD5r>LGbSswS> z|4sB=MmSDb>d&Mg0~a{?DkC=2Ly%c*OqF zM8BpQFP?9xzNPw}>brVtqUzTlG)8sBs{Y63=0%BTq$H8GTbezmZdFRvYOP+~*34NgYj(`}Usp0cot5a!KxckBGt!w= zV5$YsnOVkJnz1Q~&TMq%qBFbLbI=*{{NI_I&b)L~J81C|JD+)$1?VhIXF)oP(OHPj zB0{ooyDG><4RUchqW_&GS{^#)6+qRn44viaEGr?)>2T#&;!kJAHbm@|>1;-46*}wD zS(VOObXKFIG@p*S|LLek(1y@iTb9-|}u&W3c9{u|^*bT*;0v4$zaO^58w z>1;=5i^fA|OFG-o*^18AgHjEN(tp8hPiH4Fc93yL1K63)uHxB6$0|boD*&B6=$uMt zPdX``z36o4>`mujI{VN$fQ}M>I{VSlfB9oL4>X2)1!!pL975-CI)@5g#J_!Z6@G-l zSadu(wwfxxLq{%uG=op4N2g0ClvULNgjw`o+p#PqYDs%CIw#P{=^RO?pi>Dz{RBW~ zv5Q}?vUHS;N7Ffu&M|cK&Ck&O9N&WJoTv=Nb`qVF#W+rxpdB>bH2`^KeY>GX;lAZdI_CN>8Nu)oy+K4PUnioR)IR| zN;>-Qf9S~hU;Kirq?IuFwMl+HtRUZV3booDDgLgy(ukJ5Qucphtc=sZD3 z4*#P(qW`1yKTGF1Ixk4^&zoFI{EhuGoj2*cLgzI)ueQ#1m5#K4&Km~#7M&01H2VK8 zop)M{6!RXP_eTTO=6p!!V>%xVVLlnMKcn+IozLkgd8hLQoiFKpP3J4UIr>BSrsbsb z9i3n3{Fly;biSwaL+dv?@DrV%wMXyduWG88e{218{=gcS&YyIe+Ww-W#9xK$ME_uo zP3K>%v4;JM!5TXMTjODkkEN6!Yl0SuH4)atW0Y-8inTb_WLUFeO^!7k7FbhbO@TF~ z#Oj?Fdn&^-jZCL)r)pGLrpKBAOElk_v0cKN8A~g_@yv!bKi2G6^I*+^HCIy))|~CC z@XT$H^U8ESHEnl5Wmy1gL99iv7Q!;h-|mdHD3<=qf4x`M5?IR%$&xZIg|#%6$iB7A z5T|YdSSw(yiM1luYFH~_t%9}kV7stZRUxC5tS*)7zXHNqOH!(Yj)(Kb}VI73EG1ksln_z8)wJDaI`K`^`ELdAeiYm+mT3Xj!B`>I zAy^L9p;(7wjp{$v5m=T)b(*nd#ffZw^n|~~6 z0ji7)D{qko-^bGb=U2;yRbw54HG*{%){)9NT8X~@$2u14IDHBrf^`wrT;Q@Q-z+UQ+heSmx%(x>kYZ>9DTHdI;+VtlP0}#JUCRCbOjVznNm) zignu%+Z|Z>#H`ZN4Z1)V=_hCICW!!HF9~@eJ80%TAN3fp6dKBw%ED?YCG$rZ@ z6ZI697JsZ~T4yt2J=d~fJ&*MQ){BEB34a;qTdY^GKgN0$yZN{C8uk=euVej+^#;~g zSZ`t}g~xge>us!e#ePRWrt-hna$*bnHU@FNw6owo>VU> zw#i4SG_r9ni#;Xw9N1G~&xAcS_Vn1(V4L&53Y<;{DtiVgY(|r7X6#w9XBjYK&nAG` zhw{#ey(sov*z;r0jXfXsJlIP7Rg_fH+Sm(VFND3|Q0&6kiwvd>7<)17C9xMbAxpFj z*h^tAgT3_sa4v_v5%%)fYhtf}y(;#K*sEZ#guU`Gv*B3{TPeTcSMLJN6nib~b+Fa> z-yqk;UcZ@QuV*kDU~i}adWSd0-Wq!oY^C|wn;PWi*jr+6p}}ftD`o3k+cXCDw%9vh zZ-+f9{!+<~*hc?#mR+zfz}^)*!rl%0VC>zo55V37doS!ghaP8d?ESF!!5&q9;WV!R z>Pe0G+XtB^Jp|jvJ``K&JoaJOhhrbnR%>cjjlkFrwvX)!vp0ZYcds>@m;(_J!CFVPAxOJ@&=emt$Wd zY?sP-*?>IIf!B+Z@ee)3Kt=Q_$ z2m7`m=N%^YF6?`;<^D%u?rHh4@56ooTf~3#tNx%_eHi-<>_@Pl#eNj~DeT9v)y)sK zdKZuyo>Yd|;(r=@NdN8UuwTZ09{WY?7gRC&JO5H^2*WGbuNr@&|E~|&Wc5w#55#y2 z`)%xZvENZ(&GR1i`x>u3ADSg|1!RAM(|iv<#c2fLGn^@~Kga$Z`wQ%EvA-1Zudu&v z17-S6%ZdFR_K)KEFZTD?KMXMPus>n{f<5{Z0QRrg`sSxaV*i2D==Pu3|6>1z-E5s| z1Op!Ie{?QqEF9??j_v|DAA^|yXHuLAaVEx@NIBb`Z@vu9BnC4X&Zzj~peu12 z%-lFr;>?CK70!$}Q{zmBGYyW>e__L!9!DwvfFEZjoLL$V&dfs@XEn^T%!9KS&b&AaD~mN3{T)Rb*ThXAPXya8}oqv^%Mz*1}QRj>vrfwLdZo;Z68U@ybG56-?Csh@6tHB~jJ^S>Ae z;W#)4;~a)_h*>?5V7fR%;;+(0ICtUnaL&ew zagM=BaHI=3sg#l7*xarT;kcYT#VaI>mD(&doSi;oN|8HIC@NbB&3*4o6-73@Vq98*y&ZPQ`f( z&h6sARYv^^fTP48=guMI-8j$T+=HVI`8fB=c%O{-Hy-|Y7DI3MD?fb%BKi#V_0yo95E^Tm1DU|t<$7v|S- z-q0i}(OWq0;k=FW&XDun*2a0?7^+hU?MID)^D)jBIG^BrCeu$%uFn-rBfrG?8t1Ea z+WK*f{yX2{zKio;+z!t7xQ*cafIBnJkGK=#{Dkul&d)f1;{1a1TN94+t6}~f=Z{fZ z^{{{8wEx`x)_(nM{1Mnpg1@4sMkuQ>7ol3!)s@!RCXT+TrcY480*ZRdaT|lwTWbm`#E{Z!V?){SG54#1#uU~T}T0RJ&Uv-lm4*W#RR5a0dSYV zT@rVx7HROy;BJb$Ebdyk%i*quyFBhnxGN}tidxYiSH@jcJgevwl2JUW3*fFH3 zR(|uC+YUu-kGrE#nZN&ccf#GdMH>9Bl3ld`+}%}d`(1MP#61LeFWmiPX>Z(paE<=! z%J;`T2=@To1BW>Uum1!H_fXu!aSt0X%jyyB6xYJN9oNP^3)jIN!F6$CTn{(E^%YDN z);0JLwoR zP@=}X1#&OOy#n_VTy^t<6cw7{kRX~K7gzGf^k07 z+PIGh_)%QB{22v2f%_8fleo{}K85>?z|1X>D=k1*{ygprnpqY3qG5hnLSE5Jx~kW3 zUl;!yGQNrXHtt&k46d{Q&HNr-^RMrHya{nX!2KQfL)`ChKf+a#j{7n0C%B*Eeu}HQ zz|dZOf%~PN8b7Xj3&2(SkNd6JivNo9d)!}ff5812_eb2H{wMYqga2(bkz)G;_fK3= ze)lh-`r9D?!5bI%U%avL#u`N7jrsepHy+;jcoS$q`!C&_2yY&|iSeevn*?uiyh#>d{`91Ka#G9fG#8azgX)3&_TYTfen-*^tyy@^}#GAhL%*Hb--duRI z;mvLc=fIn@U2Q!=YySSnn-^~-y!r5!z?&aW2|k{*0B=FVurS`D619lQvKZdtnoTOl zTM};>JpKDG-qHrSES@^{02PYHSyLJz*=}~ zS_@Q7y|}|x2M3&`QO_|rsfJr zJ;nZbhu|H6caSXUD)-`=mMqzL9-f2eYK*SO$LltLF`Xe^ zgqPs;@ZteyW8kFS9!aEmFegaUXp3~;SI}cB3KAye> z!n+XfBK=%?A1=XDYLBP%AMdg@R&4bOfT#3djH~dj$GckWYh+X{08jK^V{X8^MVvRv zcoW{ujiLV2fLrmD{^Q*~@Z;S{{1@I`gv|$cH{E9c@4;{O?Oyyj@$SQW74Lq$7x5mz zdj{`8yhrhr_~Sj?^5Cf!AP@T(-jjIh{Ew#(|6)HSqlmvoD*eZMt{KI69`6NZOR3^{ zNye9D)GYw-HM~FZUdQ_q?+v^U@!rIH2T$~05x(7$;Ju62$o_k3sxy9|$n{oyg!dWV z$9SI#|0g=HUe)J+ye|y?E4&}@zQ+4b@ZZR2^xsoI0pNYFz?$JlykGHt!uthJ?tjE@ zR+awa{f=kO|2pa~{7Lct#ve}r4d*}jW8?jcKPvtzmp=~vxD94Bqd&e1@h8Ba7=J?i ziP~IxR7>Xm$Da&;di=@pr@{wc_TQhPMdGU$0b@^%KdsPC(>n2|Q%1X={tWoD;m?Ra zGrrdUCJ=uX{8MJ1pMerBHSB=21NegKA&|eaNdHkjDm&IQif0+TyfVKWNQ~VWVH0OVRW&HKfsRE&itXTj6geu+3%M z0)NW^Lu=q~jjzRDFx%npgulHaR9Te%4Ojd{KB`T7bVV{(kre2zdV%DYp3uz&{wjgMSGA;rJr{{$UCxoPs=}wedy&eOsK4 za_YPuejne*Pw>0=kpKc2LxbrlLlr#Q1@Ki1z|Zh={Gvq;_6on0)k;Ry1@K2&4E|Ac zo9WT`kKrGKe=h#9_^09@hkp|O@d~E!C*Ysh+GaCP7XMHS@K3`(9sexxpMig-!na>S z#c;OxjsE-R;opRRKK_63FTlSH|3dsr@Gru@co5YX_?HfN@TDF2S15q~Os~Wj!S}Bc z{;Q4uTKwzruT!y72L28B<}W|B=Vtr|@NdDt3;$O9JMeGAzrAHJQFjh8+>L)9{yq5j zwyP%B{d%e%Q@sMs6`&i?jp&9dWRy^~0J?GOp_>vk^<;Fv zqnp!xlx{)yV!D00r_(Lz9!3gCXa572#>?t^q68s?{~8bOPs`xxC% z={`>Pb-GW`eUa{ybd})K75(o%ZEARy?(=k?YXb%F!hn{p9R9m6(|xsZ(tTwJ_L^aM zgYJiP-=zBv-M17#Wik5SeV6Y0bl)2a{Gi2{@Q(!lF9}kj{4o7>Hb3Z*FlIp)bDivr2EIP zQ<(pjar6_U`!B&H1Y;45PcSyYxCG;;!WW%t0`xMw*g@XC8w2ByirrD#83M3BiH{OA{R_*wkFtt zU>kz%WU5;Lft>$!mK|kjClzaUm0%ZwT?zIk*o|Nh0qovx2!UMw1bdB%--lpdg8c=# zpWZrEzyU2M!9fI{6C6x%HNhbS#}FJ!&?PvGz#=$Y0*{cf(}sv`6KMS>a0z^IdINsh z>VTji2nnJ#kf2A<2!2eEXrzA9j36J=(OzU_9Pvm0ICHLoZ2#oeLBHK1ZNPOL!i$81ZNSPtwVI3=MpH{ zCpfS56I?)`lz)ilVuH&F)K9dv1)bp$b_1!(&kf|m%cC3u+NI)Xb0 zt|z#uK@!{`(|2brf{s+yc|BrGG>IugpoP=;}!U+k-AsnA@Ttcn)Pe~&A>4^@Q^IWsHzQPcK7^ag zxP@U8{SW2vKbm4&!tDrmAl$y?ln|x=CTeHG{Rnp<+=Fme!rfZGWHHn8vcU`4z{nxopAr$c+-Qm*-&mla6@GQbJRRNM$ z!bkrv0K#*H{JeIR@B+ds2~`Uqyom5}!ixznB~_@tS57 z<632?{lA{@5yBh9c_ZQ7gf|f?%_qEBMs@xdV(x?={o= zOzZ=M4-r1tPSvRRA0A8zA0>QDoR1SeL-+*YQ-n{pNXc$mfC?1-51%7^zD?Bf5WYy% z{BwSZ@L$503BMwIh44MXR|($~^4ADoCsg9E1Jw?^MfeV(9RBr_ivDZ+eZtQOKOp>= z@Iyka{N@2aA^dc>hQ=oRobU_6FNghvUlaaL_zmHYgx?Z=Pxu|7(f_s{75jr>{)zBc z!k-C$(LDNF`kR_+`ww}jKM9+_zXk@5Dv>wrhMC;4y2AW)+lt}*yOtcBn zRz#Z;sgpm^W+wX?o$`g!F)Fq0D0-1(t)jT^Bf7n@b)X8lljyE?N_02T zJ$h+$5AP$opGeOC(F4P)L=V#&pXd>yuZbQddW+~WqDH_UCwiLbi3UvcB+*kkN;kzY={*^gYpcjg#oV z12EAKL_dks-2X>E%T!u`i0^d_P=89jCQr#DH9r>A;>cqXSe6+P%F9(q$KK=Y)% zDO*FFQ`4JPoYR=q>4sKkpf`)aW~4Whp`F-q^l6Y1$o|P4?u4GkNTCMfaTisyRq_-Kpwdid?Z*6*V?C-5(R@bAq zerp@ghV(X}w-LRKTV}ngD%o_%-kjbR^tLqFx1zW8FrMDF^bV%C9lgEiZBK6(dOOhD zslm`2y8rK~7SPbr+m+rP^me1CPyR!>_H1o>d(%_5J@odWC;G2r_osKDFq;;jFb5gt zL+BkrPxQYh`rlLfKg8dm*PQ?Dfs>wNVm*2%(DUi#jfY;BUO=xWb||BM1)vwxOX($T zU^~*wOyvc=W9aqi9YwFCH$tzXr*8fgQa^lIAlZ)kbM zzKPz=ZMa#zmELW})?I+!oyKz)y}ONlkE!QAde6|ipWZ{w5gQr}q)P55)OlGpheI!^iYKq4(*))A;FqPEQFw zy)Wo}Il$BVy0z)4zyB1#cf@1S`!BuU>3vV{7kWR?`$?9Du7G-~1(=Xu>HVf`&F}}k zCZlQr^!}nZ=J~((Pm84YZ_7YDHu1#7;}DNeJg!O<59xnA0r7+eIgv6XFYzSAlNx(6 zVu&Yir!9uq=zlyVaZWrH@m9oB6R%7>4e@-$(-O~0JRR|jO$hPys^D0?3&?aP8D}P* zrS&LU1(=O^PGWf-i04pF?VpQy9^$z*SRr)_5T5yomm*$(xRLh-i5DhT;%{;-LcFM+ z>gsczfa<#ooancOu?-%-CIt_aNR)0aX2_3n*Lbzxel-aUbG+iT4*< zbp$aEXhvfnMC=hCOxz(pL{<+aRE8&5R zO8iZ%w1YS%PKo6T$m|KR(f_z0zK6I^d?s;8d@^xGe56pRR{&yj{}UfYd>rx7#K*MR zWmWyZ0Ad_Zd?N7)jjjGuk8o0Jv>sw<0r9ECrxBk)eEI-s7|tTTj`(ciONh@Q7Uhr6 zZD7RbwN%6x5MOBQi-^tN|L7VnCBBmQGGZnB#Fy(jRWbiDQCAUPBjsIf@?NW!bj{Zj z-z2d&5Z^fDznS=U@!vvxEAeduW^vv@d>8SZ%Bd^4djKH5m-t=c`-q<;s=Ny zBYu$h5#oo4AJ$-9gZ%N2=6SrWf%pk!Xy;RsRJ8!&XN>bX;+Ke@m!%hERE@x_zD%st zp7<4Ft^X4KI`Lb?ZxFw!!8*m;#P77RhT%P8CECRA6MsPbDe;HI9}CGxgIMBE4E{6X zFNi#wD4UWIU1y6hkt8 zTcOw!l8pWdD9I!wQ;Nm))*wB|B2{-yNAhKB#V&DO)|d#<{=UNSK#?f>;keRhyP?D zl7(A;TLa0WBrB3EMzRda;v`FvEJ3p5Fh;_cZapN+k}NMCt^Z=LVAxh7S(9XClGR97 zAz4*FsjhZ)k~PNktkq0O)>hnpl8s4}{tH;&|480VNH!(W zH$Mijg)D7Jvb7jnwHZmaQ2;OlWb3-#GhnGlAVTY6Xz}@yQ&Z!wL8fHBzwrx zo+NVflk6o^rT;FcQ@T1_h9GNL&(Ney z0#vmgiO7E9w^1YkNjL}>@*c^5NMe%HND`8oBo%)~(ibBqDFz`Va{r^qE5kWLa;zYa zBsq%Y=+-ZuV+`gvk`u*qJjsy$Cnu4dLUQsTL@@eS0Fu*5E+RRDL}@$8nIvbCoFn$x zx+LX4*F3wlgX99mru?Q0Bo`acB_x-UTtRXfiBbM`KlOL-N|MJ(t|Gaa zRSO`wPEo0E;|(&sQB9R!bp-L>LUJF;tt5AlsPjL`?JY)D?DVOiko-*YF3A@p?~!~=@;=FjBp>KN zy+0or&QC}_lcb}+0+8qyK=LKYe@VU~`9?6Rn~3o(iHLu@73#siC;5>?^k08=>P5h0 z`Gw>Ul3yDS$!{|Lu9il3@=ub#Nd6)Dn?$zPtdjgoI+jMZ%;`9!|BrNB(#c52Bb|_R ze8rinMxg#{>PaUeorHAaK_Ka*?NW;&oxCwfRSO`U!bD9;IxFc^q|=j5O*$RvG^FYl zXgF3vW+0uJbVgDU|3S5>c?D3kvyskCIy>o{l1sM$(zynNr1L0dRf)6!6*WKUR-_A% zu1>lj=`y4XkuD~fg-I77HGlu3cVltVrAU_`{U7~LjsB<0lCDU)9O(+ev;3d{nXW{- ziWn=me$rJ*S8F_Ks5l&3~k- z1&~(8KSHVmob*W2qe!I}q^b*$8vRd?BUQ3bYVLp16G=}RE|2sSMW`^R%6J;-=>q`i znWT4-o<({M>Di>0ke)+&A?dlK=b8G?Cl&FRuaI$GL@N5PzgL%%UP*cx=@q1=1*nfe zAO1}ZS4j<5tEpPOmh?taCH|zUDTr}{NpTbD?W8x8-YWiE6hK8O{ckbizk~En<qt4LMn%UgONm!n@XM}eMWemlJRN7^DOD} zq|fPMM*o$)NcIcqOJvRW^JTL6NM9ivi}Y2}Z%AJw{h0K1(sxMTAT>At>06|451va3 zc$f48()UQ;Z!?;_ACi8gJ$nB?AysNm`l*bn7l`o%=~rUN6_8X&`n6g8mh^Yh??`_l z{V(Ycq~EJ0iETzwbN`?IO!`a1BhFt*B$F>j`|R0N zDqOElLpCefv}7{~|8z2{`yVl8B%4``nT%&h|FhZ1<|dn+Y%a1n$mVP@V~pyd<`IT@ z4a59o8;~tPwgTCLWQ)t{LSze*Eh_dR&Dem+R8uffOOP!?wj|k7W>t&7ge)uLa%9Wv z5MBR@WNVSFM7F8`R+drq0^whcYz?y2b%-ieT?d&}b^a$?hipAE)f7x6>knZzB-@^B zBeJc?HWvIQWSf(1N;c;CKih&#D}T!);H_ochHP6hCH{IzJ^K!1O54eHB-@Ehx(-uW(BP8N{GvKo>_WLo)KBv~R$DVY|3!&xYR z;_Q=^%BeYPvXjV0$c~ZKBV{~FMy3A^j7-`=b{yFWWLo^ie_{&|@X2Ink)1+zx=cm? zv(rqLGsJnO!fVd6$<*(>Wap5bOQ!X|#S8cXS-sFOTuk;j*(GGRkX=f44cTR6O7O{4 z3n06qWfsqsWLJ^to1fNCb}iYBWY-D!da@f@X2XAzf+@C}4gOZL2gz*IQ)oki9*W z{av#6#$@<_>?^Vl$vz=dEr9If0SVcsWM7bdMy7g!3Y6N&jQA`3*JR(5eM9!0gnv6g zl9~IT><6-+WYy?@_Opg5hF{5>ul;Z2%aHv}-iYcS@OMrmhu1EK(c?y z$0Hw$d|dLe$;Z*pWp=Nbl8>)K@}cv8J`p+MoS1wP^2x|`3($|2>n=b(1^LuM(lAU( zF5=&kE9Pn1GK6Y6^7+W8C!d3S2J)H3IU~7w1yD82LOz@LXKe$?XIB~9{mkbipO;*n z|HE0V7)_?23I@>R%JZKI55b@DaI*U(Nyz81L>|Dl@KCEtL2 zJ>^sY^9rEs4aqkefXO!@-+?VP z4yMAL$af*%S&^8k$agiXyOSSGuJoULPxAfA_afhyd~fo7G+uu?`wbY#4-ou;3*r;wjYu8#fWrwvxg&uB5^XOUk`em42V5got7g!j^6d(v?K{cu7KXc8C;2_(M*J1YeFpge`RC*hlD|a$5c!kj4@=-9z6fj`U7w2m& zfcy<|ef~Ed^$I}#4*9#S$5j44`N!lRkbh`A<`qDf_X+u@pNw(_iplBENdd*_ z6jM;_K=J=5mZO-GVqS`=C}yUZnqoQ%rT-Mu4lztmF{3!u8-af0!kqt$Stw?wP~uOa z8i4`KK`}Q)lXR|uQ!O?7Q0Oi|F(1WJ6!TLoMzH|J!W0WqEHsR#ScF1}e;eBv6!L;l zEJ3kkn@f*sNqRxCjKG#{qbQcA*pOlciZv)!q*#q&B?@)sr!e0DApdzvd)mb9>w|;8??Dh)J7CrQ*2DJ8O0_-xTyvx^35r>qS%5$bp%Z%JENuw zunonwjh|vWitR@MYH3Fbn_?#lk?Ue-id`u7qS%#U4~pF=)Zt%+$hT40_H1p6y(#u> zY>Iu1XFrPl2S`~ukm68^gIW@bgDLdozX>^v;&6%%#Ssc)a#83OK;ck~P`DH^g+~zx ztxwS%;3>k!ridua`CqD~NGJ+fN+~i5ee=_1q3Bao!d9AMYGvryBPmXxIEvypVK|!N z7zz>pQOxlzl^Rt6CsLe5aSFxBtw+dDrO+q;7EEyl#oH8TQru2)7R99$XH#52agLCj zOL3m5;rt<<3n?xUfYN`8i(8E0yo};HipwdkrnrLQDvJM5T-mPbQJzZ}u95ND)=zOg z#ZBV5fnrGii<>EKrMN{WQb})9w%(sRD4w9Wlj0GIyD09bxSQf0!+9@-R(^wjfZ`#F z2Ngg*WeR=y-vB7&MWA?0%6Pm5i2WqR%M?#hyg>0Z#k1mkrUg(uN1;#t#v}T#J_~*R zr+9_p4T@JOUZ>FFufV#7HyeZEts&1l6n|2@OYtMcdlX+#yif5l#Rn80QG7T+8ir3O zKBM@wowlnK`YnLsONwtOzB2x=&2D^4@jb_s4F*Dz-l^{qe;ZZwN4fX6sKx zzY+O~=}#({Ni;?UPG&IBZ>CeIsnj6IDb4EC^k=3&4gKlp59xn@ditXO{TW(L`Xc`A z_o_dOkjzSdb}?o%m^qZ8F>}$smj2xIE&B7&-(F0? z{u=aGrN6qYuBP$2@-@Y|7JZ}tqcyBce?9t2`RVKPKm85qZ#2l*81y%xzbE}o>F-E? zGx}T8-<-bs%YXV?v`G3}sgm>)Z9{*1`rFdqZkR{1>|iiE(cg{!&h&R_J+iv1Sye57 zzB>OK{=MiQOn-0s`_Y$I00r3B;POT7A3gj_md;QX zoBnb19r_i0mwqGwkG@Yo5L;S6L$01ZG~_+{1^t+QMn9pSYC=;3{k-+i?+Zz(rh2bx z@r=+vn*NckpZ-y1RW614(gHO8c=~5b$O-gMq<@OoC&?%+Koxc>{nN#BS~Hp=&uDG> zXVJfu{@L^|pnnei^XQ*D1RK)-{)O}}7M_bVK#^Z!2rr|575&TU|3@(T6@dPgEub0c zU#$YwC#CdXJlE0xFa7K3zexWE`VY~+k^VjOZ=!!Y{hR6EO8=HNO7KJa-@k*tI`h-N zvt<)oy$cBPUi$Zoao^CYx&@;DU^5E%Vfs(ge}w)M^hN*skI^^cuQ5*w@+n0k%rbq3 z{3>aM{R*rYqz3xxBFNa^ z)Bl_P5A;Rt`#&~*`ajYCS&U!k|2iBi&fjJHL&iU4{Hqxo82$gFY{LJcY!&`r%CRWN zr5u~m-2VttMV0y$fN}!LNhl{2=R}kfw`}?;%1J3FmnEbBC6rU>s@l)1oRV@{%Bci4 zwF+1K(I=*M=4FATtxhfwn$2S1w^?7<+_whQm#a~6s0=tQ!Y)p z%n-wJlq*m!uVVG%Xz>^D%9LwRu0p9apK{e9m^uHKYf`RFxt0po4C@TR)}!2%a(&8; zDL0_ph;qZhsx}n!CMI?>%55k&r`(Ei3rf`m6in~H))p%-|*~2nNjXc zc^Ks`lzUO`+ALA-MybSK>^&&=Y;EJ&oALn4eJJ;%R4)R?zyAP6c_8H>lm}5BteyI) z4^>mmd^n{;c?6|Rsq~-H(%?~yOBqsnluGj{eN(w=1jddi6UrWCtc%h7rUj_Lobouz zg0i9%{V#{~zpN>brW~PEnolV$pefkwD&;YhL;7DHPkAz>-2ap(wv|wxWa>GE@(kfQ zmGU&o(>0IYfio%3ZakD{nZR=>&mH8FrSmC2rM!Uhe##3eZ=k%0@>PLd z%DbbD5?l3xmYh<(1yJ5Aqt<`Q2PmJXe30@9%7-XL@XLoOA5np$vGNK~>MlU}B;_;0 z^OR(Hx=kS-c^4?3Yhx*2pnRM1MatJGU!r`4^5p@o;9oV!*D2qmd_zq~^S)(@e~0oz z%6BQ>r&Nu=_&*rnDLw46lk#s$E&hURzE}T@fvm=&8i#7^ zHc*XC_G(<6y&9itda4Pirl6XTYEr6+s3xH@Enu(@)nrsi?BtrN{XSO>+tlKpl4>fQ zy7_un(@;&oYGJA+#a@JJQ7U!jr_%Z__7cq~{7X?SOSQC`DvWLc zRLfDVNVPoG3Ob$O1+$WgU4?23s#U2rq*{$?9jeu-))dSd2D28`80UYgb*a`ftLsy3 z(AwtdHlo^;YGWbUL@nt$H>28IBeiEssvW4dqLK@rYHO-(26%b2?Wm*$=ud4&s@eXR2NFa}5-)+RfCk2i0Cwqb-1H??Gy+eW?gr>PV`ZYNYiT9@Pj8=9t!|I@YWnPjv>>2~?+1ok(>G)k#z* zYX;4H>JWo^5olMb&ZIhz>MW{r8V}Xk#&24Hs_J~I3rwyHsV-_U26+k9CsdbG-AQ#B z)%8@DQ(Yx&S5W;&!4$LZ0#sMa^coqjrBXlswiuJ*2C5sWZV|vuGTy8Js*+o&ZWqsO ztw)@9n83TJo~62*>QSnDs2-%cmrBn6mDYd3>tBJX9ulgDsUB$=43CI^^*Gg2R8LSn zIp*rqRL_j*d5-E$s^_U*p?ZNz-T6?xXxLuXrK(MMmFjg#`r3ej>J5W@i|T!eOeMI%)=#ru}U7-4udMc{VsQ#h)oa#raFQ~qy`jSfB`A{kS7eloJ z!}%T6_sx{b+yW{42ZQ{H>JO@)seTpAFDB|Ys^44Nc>bjNo9eHDlS)2WUHQM%lTwdG zJpuLD)Z;3)dK{gl9*=r_9oSY_Pe`p~pL!yLnWQzuIT^L+f35YOdJ1auMD>(I$f>Cp zq@IR)7V2rKXOM6?|JTzGGE&b-JrniJIe;C0pq_p7x#~Ho)sMdltgD@e zdVcD8splKOB+&wcDfL3sOH(gQy;$R&dO3q% zUKu*OKL1m%)P_^9!f88GugY=vQLn~P`%|yZk2Z#`7!w$$4V zvq_d6WZcnI-jux`^)A$VQtwK=JN0fu40{aOdr|KrvAP9N@2ggI4eI<)E&5+8{Wt!D zsUzw`s6FaKspY6&A4YvR^$`PD1E#j99cnH9YDp2ghDWsk>aL6db*KPMYMs4DT~Noe znowtAq-Hf&V8K)OscTs+Wvp7i*dx?O4o#1yzMA?N>T{@%r9OlDIO-Dxc|7$A3aL3y zqCS=SWa?Aej3)1C)aLxJk!MP{I{Z^>@fZ7C>dUClqrRB>eCi7u25Qpzk=>p}w_^H4L{? z-%ou9^*z*gQr|7%cWKNh!@c6y`cM4;^&`{|Qa?06Qa@}sAEj1jernYM8YlG=ts%~* z7-?kcY3eVipP_z}`dR81sh?9A74R;o_@HT5^t z|E2zxTA%#eDC+N(p`ZOn>R+gTYCY6H8@6Ame{Y=BzZv8oEk-K*i~3(#{aZ#QlGOhw zK(n7CW2x!L*fNg8i0T50wykqyd`9MDWCBK}VPrx^8stQbOwP!}j7%yax&<&YnF?%U z6(NjFF*H^B&&X6VPObccWMo=KW@ThLMrLAUdRd);kr~@nQ-f*&jHnlZ*3ZanjLgZ% z?2OEzk(zBTM&^-+(&v8(oYzFnFVh7WS(1?j8CgW83o&B;1W4`1qKqsq{>4nx60IT5 zr5IVBk);_~R;K0(NR_vosdfcMRy4L8{&j7uFme$it1_}5Bdam8IU}nxvJoSV{;wx& zYcjGHBkPF0b~751bz4LH>oc-}T2dJ|Y%z?;`F}*|KO>vUxLLa-_7;q6E5?>GZYAT^ zjEtWD8QG4Jy%^b^kzE+sfsvgU*|C8Q<=xp7vnwNeFtQsX`u=ACV`R_PW<-fUBhm;) zhV*}Ae?~G!4qzl?q4l`^=C_@pdz92B05l=i0BmbXj zvjB44Xtr>e^W}w^nVFfHnVFfH!4_H;OP0fY!_3Ug%*@QmpFB-##_O%RHPzF7`gBY7 zo*rrUs`G#27tisuPM~$-pmV{W++b*(LQC|&bs8ikdZY+9oKEz$p$ z)_+wb zS{1FH^6P8w57`$qHmwUy^kQ1C)4GJ#!?Z4?bt|pQXkAC^a#~l@x`LKyeoM^)-I!`% z46SQvT{Gg;wXUZnYTvq{4$->N^m(%>r=AGp5^ke)7p>dXRw3`8b!THs^ln=B)4GS2 zQhxD>_-p$CS`Qk(I{%w0kI;Iy-qLzh*2ic)PU|UJPtY>wf6eeTt!H$iR;}k~iO9E} zm)sX1z81tBFmKa(M~rs|NZHCcFxg8Y@%Z%x!-{-8Y$tv_k~OY1LMqWLZJ2%!4;-vCeRKiXr_R^qQX>o{08Mv?r#04DCs1uR?oL+Vj$$jP?w)C#O9%Z6tRJ+Edb2H$gKfW;Ftu zLbRu$JuU6&8V_xy|0Xme?Kx@BM0+;cGt-{M_-7r$%&u(3IWh%k&n2F@Y0oo+oR9W$ zwCAU-RGsz$v=^kk2UziCPI4~gWOIbb=@6kYw@SO z)4(qzyU4n$th=d@x?_9LKAiTRv=5-Y7wvs%EB%+yKE~KjQq=jssVLh6X&*%U5ZVV1 z{In0Ht(AWWc?4}G{5h%IeAL%i5_|;q21B zn081zqa8^omNiiTm8+iuXy>vmXjfvCvdRchce_tpo%v~>-*iR$LfRMA7~P}_T|)a> z+LzK+I#2sDSudAWpZ{sgAZTAL&M~x&`0MZ3b+unY*UNf?tVaLaH)Bmj`xe@@)Z9w@ zb=tSleo!#C)4qfDJ+zhn)4q%L-L;{5)6DnMzQ49<%Lq`0e)%KLhiE@T`(fI0=5Iej z`%&7DHMtEB?I&nIMf*ujtE$M$f6f0a?H6c2C)J-<7^zPCMcS{>eu=i43z|?>f0eco zf6ed)?JsG+Nn2FC{TA)FX}?GN9ok0x1t}%oZ>VU0Nc%I|AJP7Vw$lGW722N~%;%Ew z#Zc%g+P~2Ln)Y`RQuR=*V?A7rU32V8$azou_mMa z7uNW+|CZ1{SYy+!FZn;&n%@G{H^CZ9cW8~HLe{ugO8f_RNt|j5U`>cM5!NJF6OWEg zs<#R=xgf!sLJV~)u%@h6Q)Ozb4Y8)dS`2GitU0l!!erBxMux3#V zDmv>>Ej0qLwEknwg|&cq=Ej-_YksVGvF1~W%|~WdtOc=@@?$O3M6ni;t^ECu;IS6R zs$bMBfwcnGl2}U%Kuv_24Qm;!<*;M~XwULZNMI{siT+#q{f{_Tk#$vbU8`fQi?xP0 z*Th-}Yb~r%@BfFcbUm!~YovfTP=@MZBdjgNBO}1t1Zz{-Zl(b0>NZz~LT-trL>_A^ ztgXe+=YOniO+VXX?S{1j*3MXJ1Yqr?LW6I+wTn1+HTd1J_Ql!*Yj3PQvGy7uYXeKf zU#d%%8Uf-z0Ovxi1F?_5ItZ)&iXM!0C)OcYA=aT-Ct)3ibtKl|l6XXuDE3iU$6y^j ztw8Ru};A{3+q&@Gq6s>GUtEY)tS0^)%n?qN?pDl0a)i@ zxmYbM3#+Y=a!;^qEJr759uKR7fUr#gmpPqjMc|Vuu7~HOJv{5G*VSB zhHRz(SZX2&=lNKdU|oPEfAeWwsFAAN#RhY!q$u$>o-43!z`7Fa8Z6O&>uRhqqx-)W z>$(On>DM<=tQ)az!@3FU7Ob0tU>Wu|)r^ z`wWB9f2;?wM&AF3=Mk*OvE=Y?JvLP339P5EME~{Ocp7W;`+w^>Y5sYv7sYr%rR#=Y z!g?9&m1b+4uVHeqeY$!ukyBW2{e% z=hLCmpJRQACHk*B*XMsB`36hW-ctIH^&QstSU)s8riY)fe#O!w0L#4pv3|q)L$ZE1 z$UhrHoPT4_jr9-q^jQDHo*3(2>~XPV5ZGfWj6F8C5`R@rZj?C3!yX@dLTn}eL;i^x z8+#J$sj(-;t{Eo7MzSU!LaGr^Z?TpBV-Fqv?PA7BWSv<^ zWCS#yqdlAWXUCocd(PSxz+B4E_B_~IVb6=bGWLAfOJUECy$JRK*b8AV*uV@}%>rRq z6nk;(#ne`NmcU-J>8)9@m&RTWdzl)5J*5Bk^4Keia|M%Y#9!TkRj}8^UKM+7?A5T> zz+Qboi@hfHT6(MNuA@k_y&m=^*z03&DEu3kPBy~cct9edO|iGY-VA&5(QI1|v2BgL zvw*k3-WGd%vE>m!^|^y=cf=O)AL(Hi?ESEJ#oh~hH|#yJcgNmixQgj&Z|r@Hy|1dP zKeGL?55qnH`(W%^|40Aw*FFSWy#-Quebq|;P41C6^;hvI?1!dkpsI^S?bb0_+>GZ^yn7`!?*G zuy2vXo13~~%Lo{$eh2n_*mq*zgMAnF-MR<4C$)`zZr!+k~W8sX8Gd7OV|E88RUUT8~iZcPuW;he#EQ2!<&dfLy<4lP&3C`p= z`tXl4nZ8$!3<75g9NoF@-?3H z8_t|Kv*XO6F}mlua7NzzONn_KW}NvNB+ddji{mVavk1;YI9mBlCyU~U_{+@^h9z*8 z!WlgRoTUxhvN&tvELU%Fmd9BIX9b*Rw>$Grb(npDn>CA0~Se)%IMHpe*$XA7KtaJIzR31=&uZE?01 z@HV;u)y#G{BKwZ~36LV(u_-FZopJWS*#&1e+3q?N+P$%H_LR_GIQr#}@$ZXsIL>}J z2MS<+oC8!ye_jXS9D;N3P$!4t95&cW$`Lrnu(SLE`T!(Xm@L%7+ zaP-R`ao&t`8;%SDN5o%e-LAmez7yv`oV#$8+T+}fb59eJ?R_}+8{`8+{)ccL!+99z z5fgn>8JhEP93}fWPngc18j3!H^C8Z&IB()Shx0Pd^EfXU*)I?@dIOgg!2W?$2g+-j?#Za^%;&D3eC1QaK6O( z3g;V~uSfg!6u|i&cUGJqaL32_5$7MApKyN1`58yaKF%+LM4aCm8|M$4zi|H4h1Bi( zd&vGD?pXB}=U<%vREo5OJ2vjPxZ^0KTwU$Q9nVB3z?}wnLR@es!krX%V%$jvv;v+C zcjV-+O1M+tPKj%Nh!o*exKlTrhIv}t8F8l*hUsx<7*rRAnQ&)rJh*cB*WJ#ByD;wT zxbsNj9Jq7h%Hd!7$DP~o&x^YtuKE)o-1%|U+aX0L*ND52-m2af!CgYw7L`>^0o=t6 za!K6faF@beM*K$q-DT^o`lkt(m*@&+yAo~-cV*l?a96?I1b0>3wFR>p?&`Q}ioJ%x z%OilMS_gMS+;wr)|M|jI6T!gr`CoE3l2tzi;BJb$9qwkhTjOqytB(D+TbRVH8bb)T z!PRemOmutPopE=--3eFp-&7R*F1Wklj)=c7?_RGG-4pj%+`VuQ$K4zEK-_(B_ru+{ z0SI`1+yk0gChH*FLvatrJw*HE+6Anq0PYdEM;iQ5xW`C2GX-?@<8aT$Js$T|+!Ju+ ziNKW+pl;pCxTg&Bv z)!p_QLfj5+B%T1bi)+sR`t#N2e_ZqXUpK?O5;w;^AGeUi5?B4%C$63XxP4VcGhBds zvA`~r^`a((dkOC4xR>HyHUOKHD-7l;+#7JO#=RDIjHJs57$H}W0Jui~-5X_llS)^9 zc?G15Tk%%Ky$$yd+}m+q!@UFdN!&Ye@5j9h_g>t)C1phaWozF5xDVhyiu)k$!?+JM z{HEJSjPV%m6S$A7t@(!32JTb1FW^2cgwNnUhx@EzFc{qDn=S5(xGxLLOaayWE4W(x zCG8-@$!XGmr4UKUC{OA^Awwk4^5UxZmM^hWn*7{JE@O zG+DS`;eKuGZ*aeDY?J#v?k~7M;QoaBW8)O^pNH&Uan+e0_cxs@z2W|eHxuq(coX3M zjW;&#KLV?7+P|jae|TyZC^mD`@W#O#w|3%S7l*_(ky+m*`@Rr(W@vFwv#( zR*>k@c+21|C$@|LeF@7OU>MK13?=-wq2Ml@uM!Y-l zZo;bt--y3=i{ZIVs>}Jmxew}k@5H+c?;bp*{|0&QpfSAr>8^qI0G;}Cd=S6BQ4irS zkM}U%KX{MeeS!BV-Ya;I;XQ}gwlTje2Mo9-dA|v$@XhmzrmBk{|NqjydUs>!V~=;@&9aiewD=E@M^(VgFv?W ze*xhACELFnzclkd{OR%j#jl(E4}W|G@W;X*8-HBwpL<4=G;8UBR$li*K; zKk)#jIDIn$6xHPT45Ii`7&bKm@TZb>YW!)%FeAX9ZYX62{6+C+#Gea)CVbI(e`fqy z@Mj&sr0(qabBZxXQ>BUG&yBwT{yg~eNtJnZRJA&PW8*J~zpzBrED#d)$N$D&41Xzn z83g_k%Bh++uYi=jw0M@mUlw0Y0hO!o+Y0!*;;)Fm75+;2O5X8T#$N@0b^KKoSb0X? z|48*U@i)X@3x8ewwei={%{0skzaIYj_~zuVYi)$TIsV4@o8oWMFbmse%GQ`Iq?{TA z#9V!i>On#8>){zjNcq-^DQOhJO_P?)V1^U=RE~@%O>sOSXGA zcJ|S^{Cn{4!oPdqQ~-s%w?X3HkN*Mw1NblE zKZyS<{zLdr;6IH2s30FP$j9&>ALhY-5?^HBR}(=hKBEk6KiAm!&*Q()IO`SvCH%MX zU&em}{}ue#B=J>~^?H+~3aLwwS>O+i0RJ8Qck$m-0L5kw{|fve{xA3+;eUbuF}~7# zd^HOU_%r;G_dobw;(w3-75=yQU*mt%z%*VFerFPY!2b#V#{rcv|J-cxf5rb3|2J{| zuAHi_)_<}8!v7n;Cj3X2(9Qp=z;&U{SacSqGd7*+=!`>W5<26m#LjqhCZsbyoe72$ zB{Y$&6YCB;lhT=r&SZ3^5dY+|qO%lL{cpnFyWL z=&U|qptB~Owdt%i#IVl5t_?ct(OI9)hIBR<%G!v|#v0aqtes8i>`rGhI@{3MToSjS zvo)P9>1?Hursw*$)7h5Jjsn|`&h~V67{<`qiOwz(l@XxuyVBWBf3mvb9&`?(vnQSX z>Fh;kUpjl!*+*kcEjls+6vF{Rs0N4m+z+NBQ=oGQ9T9&C(K(#XQFM-=qm_TaN#|&j zdn~~^bdIC*5}o7e^y!>H$D?y1opb4&MCVL8C(}8N&M8erI;R@rbY-Y}dxl{qr7tk3)=R!JH(7A}trF1Tq=p_n2($!^jM)Y3*SIT;o ztXDT+I@i#-na;IzZjkn5j&!a!(HjMPliKS3Z=rKLom<5}BK~ylpmP_UI|oREzlYAF zbnd0|Af5Y~D4qKy{ehuwAENWHi9TYk_c1yz(0QEBvvi)I^E90&>1gF|_=V@0A)e>t zDxM$myx1V=yi71Pomc4mNas~LU(tDu&Ifc}r}HkIH|QwMr}L)4zfI?z#x|b!l%X(s z1km}Aj#7I%AJO@^iAn>X(owQc=QHJ0-;FQmeA(DdZ*;yEz&EmfOXqt!TKo;*2V?w1 zFae#P>C`;G(D{wduZl`D|4!#GI)Bg^dHFA#f72N){+)jb#-;Ng!Po?2jW7h`G*l`p z7*E#mhddJ!h_(k45ll=lDZwNvD%Ax%Sz{9*+bIa96vJTZ%MYf~*Ah%aunfVp1d9?( zM=%$`^aQgI%s?;`!HkNkxvoI;zxn0|vl58r2eX;z90ckqpxM?d!Q2E363jy|pKSH{ zpJ09hCH|wq3lS_#Fmm{pl*MFSoM1_UB~*&;L`Hxrv9$3lORx&Tat(%Hd4d%PRw7tY zRna}K+<*;c)!HCfjbL?xwFuTASW^ScRS>M*cnH=dc!OX)0*_#Qg2M#d^r4ejqs&7G{Ui%YlITY1zfe5xG*pXm6f*lC-FMo$%I}wQf2Rj?K zU5BE(6C6me2Z2(1f;|cLBG_ABi@sy~66{Z~-%ys)f4x=r;UI#836$&;95ND8gohKH zOmGCj(F8{d;HUwB;247A#d)k$KduQ8oIs#n{zypP|L9ImAvllVRD!bzP9r#j;B*BW zx#wqUTXk|a!8rt@-~R+H0;|Rl=(j)wwp4Kl+yRexe1fY8Is|=!fIwzJ(3OzU{~#tP z2oeIN`2_m!|HW2wK?*7TC+HDqvc;AVnr32q>`jzGWpF~}PU^vU1!aEs6?{WqA~3GODigWxU+ z$p{#^z4s8@PjD~6eY#KGgNVPt2p%GMp5S4ECkY-QcuaU6HT;hgJki+3^Ay3e1Wyw@ zGwhd3d(L29Ab5@7MS_>b|B~^)Lh!2YL|1=(Ktk{)-KhxPBKVo$ZGw*o)CeGWSJw9k zJ`gtZ2%thAHf#hR6DWlz_=Mn70@44#=zs8qg6WE15&S^#HNkfT-w>Gh{}L63@9R|x z{b-DzOztmq$0hic;2(nD2>uZK?*{fK!QbNftHGPB|Ir5fl#BD(4kfbN6?D!LQXom8AM0#tM|6>YAoEBfD^g6@=pF+cA*IyK#S=uSg- zCc4u$J06~?ksfYq&q9!+3AY-H+QBx$57q51UdH*$-Hz|raK?q zCF#yjcM-Y^&|OGi3pOyi>P3*T7p1#6U8VoVv&4|S6y0U%iukLRmN6YJM|TCf%MT$} zq^nQ<4W8>Wm>I$##$(lqp!&-z((_NeHopjfsdoJB|>F!H+J-S=aU0<>` zpsUXObT^cBqlSd;CUiFw&!)Pf`cTv(K)t2ACEZ==Zbf$ox?9uTj_x*ew;l9m+Ax3r z)7_Eo&UANDe(A7Y>F#1+yV2c~?(T+s4`ZnJ|8)1JJL>#TcR#wv(%ql#!P4OYbPp8c zpds=@=pG^IhtfTa?%{)wAdjSbG~FTn?;g_>mFRJFPosN0T_yN*PoOI!K;PSw>7Js& zDtc1yRS)nmHn(@p5gQ$SbgKVAL)pKd|7Ck*-#fNn*%-{k65HFg1A(f{s6bk*U1 z0HAv*-CO8hM)xYZO8n`{IOtwEgt?mT^>oM3y_W7ZDqVMb-H?3)U8VeVZyc(7b7Rw$ z^M6;L|LNW?$U98*F1nx4y_@dybnl`2h_rDp-TTC--~T^E_W`;OHg%ho?!zNn)%K%w zAEWyW-N)%ZDT#Ut(0z*T)4D7DSwCw?o-@V^bmctXeUa`3$^JkB35^5{^&zGrGUf{haPM0{BAKFX?_o z_iNq1zVqMG{jv7Y{f_SUbblC7iSsAAKaa-$O7|bSztR1R?(cN}q^kyj#xy^<>K>|D zAPoN_980SIOLs*73CAWJmvEfnL_+llpt8aV2&X5UkZ?-Ei3lenoS1M@!bwK(&HWE2 zC!9j@hx+{wq5e`SD&?PwaB4y&`-Iadr%s%%u?c4&oR4ru!Z`?MBAk_QX2MwpNa<%b z!r4cA<|Lela4te4{)1}|)hi&$nxAkn!UYHyCR~tkp^@fQGm8)|sy!ONIN_3nOQ`gw zPjxGnGHlBbUO>1k;ZcOk5$;U5JmDsUD-hN)z9Qjjgewt>=7%dc%!KOjZ|v0x*D$tu z1W=uXN4F+365r37UCPM8e+>~&8!p#V`B;1^E3k}xMtq8Xz z+?sIYk3UtSV%W|w>>%46jejTO--Yl{!d(gXCfrRhyA$q7sKwvl_cHi>2=^!4*KGA8 z0O0|I2NNDhcu*4>tb~UQx+OfU_7fg1>k)Ek>JdPUqY2xD#}J-Fcr4*5gvSw{D9Gap zPiSDWJxSS$=j4W&@KnMx2~Q)G!@rK6VWMXVSm}S`k?pyJ=ZVo$ehCp;gfXG$f9Mc) z2wg(YMExOTKo}CL!@sGb9tVc_6T+0RsGWqFtZE|E0K$^6PuL@@bc+5CoUgVTb0OjP zgclJ$L3lCYt%R2lUQKu@p$L9>8KKgDQ(X@Ks@7G8VGQAogx3&WPk1e%h=23rqk6bO zx2o)$2#xZG>ilmwZzFtw@OHwx3Gb-=gm)6&r2)F{Euj?LI1j?Xq*N{G#=5UMB@`pL^OeN*38j_BP5Y}|4%fD z!B0js7188G>UX|GM*pKaOFacN3=*1}Xqv`DB!B$VTxm2t(fmX+5Y0(6BhhR`GZD=q zDe4hGj9G^okP)D|n!`lrBATbRiS+*hAX4H_G@k-!h6RY0BwCPYF`|Wt7B>Dxh>ZU0 zeik>OC5*8Y(Q-uU{7kzF$q{W|TEuvBX|CeZ8qVhSE3z>MEv!A+l6R%@$V|D8Ua#n528Jr`#_}5 z|Hi)$(a}Wv63J0N+E23fCpti3^c_Bk=m?^Ni4K+MAtv`QB6I%NRYd$%SNaiv=oq5Y zh>j&Xf#|rJkm&d(U8qhZI)&&YBCY(U;;9OwIZr1#hv*C^&L>CiXMs!K-C%SYHmF?w3Y8*69qN|9mBf6SM9s7yK=t9cA z)?DfJL^l%M(4-7jqMM1HBf5p?L84oU?jgF3=uV>BiIn)Obp83>MRfNdv33&OOLV^& zY8DvS1C34e5YZDv4--8q81=j$#$!Z}YrJNDlIUror-n$LA$qnUG+ECRy+QN>(Q8C6 z61_t75|MffqyU;(JqQduM6VnFn?&yrDe)(ITLE<4cZohAdXLD6zxEG_fAlf&6hxm8 z)dKq|(RW0j5q(MYxv-7szihuE`kF{R7nl;?Ha5}sM86UJAg~{aekS@!g>>h?5dGTN zCh>P7bA((%4RxFPL@z}(Z5|2YHuX^HfiN_-zzrh&fgv6rx z@kF|ZSj4~Kk0(>K@#M0i0NP(W=O><$cn;#Jh-VPM)Wp*etEYgPoOn9o=^NX4W+YZ; ze&U&kwfM_+R#|5wo?Z8*8RiuKT(Zthtfqi4&r2-gKllXW1&Eg>UXXZk;)MjiF!7?q zi)cdC&tfWF7zD5c@sf>)c&P?PybSRQ5?xl-<%pLbVpvg}D-p~2KQ`z8cvZ#Id}rd- ziJu@|gE%K%llW-jwTO2mUYmFe;&q5OBwm+z{Tfd^G6IN={>K{;Z%Vu|@g@UW0dGdE zmA~;5Z%Moz@m9p!5N|yiysg1(PrMWH4#YbSE~E|-?@X-U{21hJ#0L}aPP`xS9>jYS z?@7Furqx%s5AnXEdG;qhi1+~F1GT@o6&imC@e#y_5+7!&9IlL!+jS(d7XR8wd8w=wQ6RUIH+x6Pgb9JNdMz5aZId60I{6^bygytlsKymRaD=Ng7_xllK3*> z9`Qv2tBCu=O7@B65kP}4G+7r*Nc2Az{nu44C%%sO3gR)uR}x=MEQkM56=e{_*XlOv zkg9S$@eN|!sQjAkX5t5lZy~-@Lbu9#8}aSL`pu8&=Pu&=h}8%nzK8hU#&3A;7rz#N z>#Mf@wV zKK~Q{F4g}a{!`c0SNb>ce-iqKxNc7?zh+KE|C6!Rw&^4pmqZCW$#^8=lT1W10m+2J zoQf?`vp`^zlGNbINFbS9ImIs_^(-L9lq6HvHpx`RBaZ+&IvvTfB-4}3Pcj3^Y$P+1 z%t|s7$;<|?9t3Kt!Adea$vh-;kjzy(N#@ic)%n~5B+0xaW(26v0whY_Nfsnoh(yUg z$-+%8$)YMz--pFXmLgd~0846e-SE;R^73DAmm}GbWOMzFbq)U+O zLGm=oo+K&BUL+@y>`ih6$vz}<@=x|9*^gxZAx?P&kSZhxksM5ND2crM(VZVgV$T2C zqt5>%N0F%4{v<~?Y$V5$94{XA2q1ul5|<<(QQ|KcpG5Rux)M*9BqWJRhV(yC`mg?} zJDibRMv{|UL{gCSN#sEw=}CIkz#2S>(tnZ*NJRWcs>ldPWCSEK0u=M*B)5}XL2@I> zl_XU=k-P{DJehtZW;xy;~3zTJ4hZOxs&96 zlDkOm5%RlD^j;Ek^4Fi&10)ZTJg5t)ZXX`llKUvhV?kt^ZHebq7e2XGs1f zd6wiWlIKX?A$gwUb&?mPy%$MdA$f_!od0$8S4l>cUzpz@d0SGH{*$~lC?VT-Nj@fd zkK_XqGXm;16!Jroj|O0pPsI5t$>$`W)pipi`GVw24HGBH*Cceomldea)4C%^}xU8(pkuFcV zqSz~#td%sCZfOA?~`g!FLILsg=x za+op{?GdC$kshfkNc|q$R0GnvnW}QTk6BkVd3k(ol2iyBZG| z1eTJ@BY;ZDNsB?0v`2cGU@Fo+=|!aHlU^vE3kI;7ob+PSOH5Z<`~`M7>9wR+kX}uC zrAkp%uG0M|dkpC{Bkd`w>qxIBy@~V&(i=xY3VidRDCw=FACTTg`ZVe7qz{wcL3)qy z-${BG>D?Nvulion2T1QDy?;=>Hb@^NeQ31j5z@zn=TTW7Yj{YXknNMCPmS*C8PZos zpCx@k0ME(#`~XAxBI!${M*sD<;#JbONnay$bPCH0Z6|i)ygkd@q?-O z6Y1ZiKa}0d)km8?1g>-Z-viZp7uD4`L z|H4w#1;&fQM{pGWF)4OdbKG zI@xj!l57RCmB>~cP9$5IY?Y>*G_V?((sr`d$<`oSn`})o5&z~x(YJk_CWUN0vW>~s zC)-f6HZcB;8bh3$kZndbG6KjpC);8GkcPJ+JCbZ`vVF+5A={m7Te6+VwjP<#~GIl1b5B$53?WzHzzBzkH^*zay=9BF;j3L{X>>x7H|7?G<0|j%yXw1Q6O6|!G zkyS>3y1j?X_6P;mpVU#}Ihst){Mj*N$C{8i|7UXkS8Os1vXji`athhQWT%o9WT%nY zWT%szOQyu1>`XHC+Mn#KhEVKtw5>^3Lm`v+`!$x)) z+0|s1lU*r*D~w;nUw_TUkf}32nH~XT*O6V{^k6!Q1t|$?h6pYJ*HY3rHLH$@YG-2W9(!>B@`%1%8C=8?r~q-X(jC>_xK2$(|#7 zg6wIsC&|qDUvoY~_H4u7unF_?WG^VE#=J!KCfUnmuaUh%_Nqqe=<8%}3^S0uB_wZ? zy`%ja`5xJ4Wbc!GO!k3bJ|r7C{5P~@O8?0|HCv_sWM7bdC5DUu<@ve+s8wyhCHs!- zce3xvej)pT>?h&Tj{syp5AbBank+p9$o?SvTX_DIRXqYo`afjR;txmJGip~HVZ3;Cktvy#tGJ{$R*k~KT|9D|RBd@gd4{e14m zNj@+6d=0bVUw~W={P}|93k^c#iwxO|)i$|0{F5&s>yks!rOCG^Uxs{L@@2_a7Qk}k z%agBQ>aIw>(x5Q`tU|sf`KsjV%ulY)|6;76VDh~Z*jnUklWXN~{N(GAZ%V#C`9|bQ z{K?fI7|Pn1e3JnW`DWzXkZ(@D75NtATaJL6FL1uKVcu5Qwo?Gz&kp2=lJ7{q2l-Cq zyOHlqzROT8Jq5_sjy~y_^-&yO69KZg9c+CzS<_Ul?Fke@7m(f{1&e|`%2Y2>F48Y4fQ{0zO- z*M1iH1LS9uk0C#Yyd*!DyhDB-xh0$}S=;7XY;up>Ay>+;oVo`!4vZa;C*)o7h&)t& zT`O(?^-7+S=e3_)9sx8-VHkSkmylQFO7qG4 zzhY2M{8y1*JsN)vxxC)VuNA;`|{%ok1rnedtosqqL_qYVzt$tNyR@|y&4Y`b5cw}F(XCIFdfB| z6jM`7r7!}cn1(`4fhNTyPERp|vNiKe6tmVCikT_o<&VytO`Nk+jEKK@=Au}LVs480 zWjhbWycDDLzgR#*3)ZVHt@vdk6pKh`QB!?!itQ+tpjek;Ns3h|mZDgJVrhzHDV7;9 zP%KBWyx!{0SEN{(VrT@^pJSmP0Vr0ZSd(IPm7=Q42+;Og6l+tA*8gHXicKljr`U)> z^uHLb|Ha02&lEBO6yatRTT^UKu_eV8`Z5(@t08+EDXsM1T<`W2hf?f7u{Xtz6uVOF zM6q)Npx9*yxf{iv6uVRGF>p!)a`+cQihU^ducH+EQi%R*{{a*SQ5>j>>U(uC#UZ14 z4x>1c;&6&%DUP5xn&L=`qZ<4GNpXx}IF8~33iVJhjG;J*;!KK@DNds}h2qo^fVvx} zQ;gRCLLL4o%qt*epG$Es#d#E0QM4!$iZ(@;!lLjgYzmjcQMCH%ydhiO{}e$JYWx&x z1W>5+KZPCv6e-0;6d6UIBB$t46cpu1qP|g;xn8CJ6c$C#zXN6#pe{SQoKj;8pWHnpW<~2^9Z28Z&AEMq4Zz( zqnz(HHpTlC>da5^0mX*{48_M3>da5^$&mB2#-{j!;s=T^DZY{1uPDA&Ayb0lTZ-=} zz8`o5_9Mmb6hBe?BHN$qwFXf9N}*5w#`6b-h`(y=uK@|gKa};4!~ZDPp!k<^PKy61 zr=T2*astY+DaWH6M{$9wp{B#KCY+vf zO3G;{mHtys-4GgDH3cZm`M;cjau&)NDQBjfX&71Cl(SOKE_gKp#3Lg>*P4rR1yTui)o1kS&96#XwZq})h5HNz&9TTyOGxdr8Bl$(!^$|HcjV_Q=y*{4(^K)0lt*`89VJ>?Fv z?kMX{8le2UQ0_{(o6b@xyEiuFo|K1B?nQY3<=&FG59NN8`znB`La8Q#x#R-{b`a&k zL(W4fkEJ|}@+gTOPI&~SIr-}=Jz7G?sH_n-c@`*-r#yl3MD5r3lPPbcJcTl&JeAU+ zJdIMMzC4}s3}HKSi0W+0Hsv{#=TV+J@C&SEnzv+YtEluq=~70N9%Vo&=YMs_ItJfu zkd&eE#KMrsnl{loM43}wOj%I&B~()O#HfZaqW|Ru;=hpcqK4BjUqUHTUtTJJ%VfRW zM6aYALwS`r%_D$n^%~0SDX*m*QGV&?h8n50o>jo zO|82qAE3OO@?Oe&bV${@k5Zrf8z<$1ln+xrq_$G4UMU|j(Z?uXqzL-u0)@sRQgZ(!T>}066ITzFH^os`O1+0HA;2zr+j^g;Y|flSN%5SN0jeS zzEAls<$I0aL_eS$`QslU`Iz!E%1o-%8_bOK7Na*4y?N=)Oi$kS^k$(qD?Ow9z1iuB_?xQ` zhPh;&Th@6D+kEsE5|2!T-U4DTSg+Fj!m^dae{WIc)c(cktxj(VdMndglHM``TT0fY z4Q5$-E6`hx-ttW?<6n{9(BWS=>8bNSy;Wsh%^=sHw+X#9>8($1Eqd$HTbthK^M6nD zUw5?uy^ZK?*rW^9#zXd|^tPtA8NDs(ZBB2CK}fE2==|T?hTeAc)F2pO=xuNA*pBor zq_-2j6Y1?tPw6(jUFhvfZ!dbg(NiaXdb8Ue6y@LdKu!$b34COz}baDhe5&Yhff>d)sjAQ5>NAK7MFP`J+ozO%L<|KL^y_4yk zP45(XXV5#9p83n4-swZRO8@Dppm=(Ti6e{U^%BL3ZY7%;n(|eNM6Pi#Lk`bVy&(M37-m~;xqW2uV7w9SdH~qY*?2+xuwM|b( zfXaQ1-kbDZZ!q-UXpr>Y64=}H-f29>{~lHS!}UJZWb{6uS4-=M^uDF{5xpCFdMO+z&^)wEPIP|4w6;kEut?u=9; z=YOhM#5pU~>|*FCAhwrkykwFcG7RI5_0qSE!X zuST`{0BoFVQmsX`w)Sh}x>TD`tw*&X)%sNWFaJ%&ji@#rjo*}Nv(cU{s3NK@sg9@G zifUh~t*Poi=G=yAdn&E}RNI+0cA(mcO8@e=>6uDB7t}V@u2g$d?MAgH)$Ua0{g3W; zFI`&Q#(jqD{iqJEw^aL69YA%E*zyXdEb1s!f zbsm*X)uOVf+5^17I8?57>ieM1|5P0+rTJ9BfRoCc|ErklW~zkh5~`G{q{U{C5_dis9TvE2yp<0K|DU)wNV(#J*;T z=Q^qzsjjEGVc;}HZ!*R$RL@Y|N_9WgZB%zq-97+Q-AQ#1)m>C~Yp1@Jd#Ualz-lV0 z2dEySdXVZ7s)wi^9*)*FmC^s|ajGY&o=^b&={!aC^yn*kmg;4y=crzgTs;D)ITc@b)`oCtM90Or21YkKPZg8-k+#` zp;F@Ccl>SrwN%araUsPK84QBYe{U81D>5oNUCPH6EK>dmI$E82s z@Rib^KymhE1T>xWC#F9Q{Yk_>Dg7zwPey+V`jgWi`Q>jN6@cl#Kb36NXwd!ir=>p& z{psk>C?Tc)^yOCos^UxvsSNYK0Q$4ipNsx%^yd)2ngxbx&c>!MhyVUOL!tTTFGGKR z`in@G%!U4fVlPC0WCYOH=YRT((O;bYlJu7t;#rFR(t6u`pZm+wUy1&5%BlKPBY^%2 zvaVxpxH`WrM^hIu2k zRh)VX(BG8)8T2=!e=z;c>F-Q`3;Np#W=mPOl67mtur2)^>2D{_?dk7O8@dhkLF_cx z(%*&t-t>2+uQZ?jZuECoQGFGAic|Dod-kEfKmC0h4E_BK@&G{|NMB8Xp<0K~Kc4=f z^pBu_n8`ZaWF1NWX!=JDQs^H;|G0Wf|JVVEY)_znvKS}IdXkPR8n{VxMcbl(!Y%UMf5MFe=+?_ zbX2~dChKzgS2TY5SJJ;~kS^q7=-*HO8v3`=zn1EAM% z;Wqkr)4!emo%HW$U}{w)cbOjUp?@F!dq)!WPtXJOAE*By{YU6OBq<{!fW8uc`j0hi zbuRrU=szvaC+R<>*fh^G4Tk=+%23GXIe!ECFL3^}^k1a^7yXy$e@_2p`tQFn(fu+9x#nQU~ z)+AV9O^PLgZ%w8cEd2_AH6_;6;+aabwRNp&u%^dqkmlycQu;qsYlij_YbLCfux7?u z6l)f&Ik9HNk^{dr8`kU!ra9*rFksDvwE))KSo2}cgEjAfS(+cxe``T3eg4N<7;E(A zUyzGoEsM2y!;G~A*3wu@VlAZ$wSQgKGDCI$fwer=as!Vfu7IV)zwH5QWpS>8wHDT@ zSW4}&{)wf;zlCARc3`d9KDK_WwXxR0TCaJ;TGz0xkF|k@>3%lCIu~nWti!N2!P*0B zQ>^W+Rmhm~WUk7Z$9fOR?6g;*D3UDTu)%q3Wt>PJO>nektNbuHGFSXT?b zx&N`QQ2;&P>#%Obx*kjI0To|#s{#5^xt|I>nW^9upY;H6zj1z%j7!@t-+WBoF~i|04&Ch>RdiLw5`9uKQY`E!85`m43E$H$&f zRkW4?yG)#h%RIC&yMd|1DS&r@{tXZ3Kp4njw2y>^ZQf!=43udh8h` z#pu616ZXt)mdTwJdvUjchn>=m(B#$KtV zHRP)pR}u-C<2TdJ=!gjo-JL+tgjHyBI1k;3Ten_zE?y(#t< z*qaHV(tlHTOYE)1xs_&6&71STy`6;Q{BQ4|vNY#T*bes2*#E)a1$%GoU9tBR@NP2h zF5?~suk>GL)edCtMh;B$9{CkejNKv>?g2a!hRC_IqavfmF#2dUjbo1 zgZ->d(VtYK|1UNk>=y=9lJYY4>)5Ygzb4UFhdU9#8?6WXE$k1lWh1cP!F~_>T@}*& z?+<9PKg9kN`y(Oz82gh!$bdg_Scg84fapi-(r8? zBx38g0PG*Ie;nq-me&FM7wli#5~k4aI1^z1f&CY@tgzzIy8zC3s){qdqH0&(nGk1E zoQZHI)(p-hL($0uKlzYnN}O46rox#4XKI{j1pv-8IQp~G{is6I;Y_b`+ZA)vMj-f^ zaAXV6JD~XXIY#@aYXr@#RP2h-&qo8X&kc!=nnNO0FLOtvmDL}ILi<5uQ+6{jI$QbDmZK4 ztctT*(=CqL0>oH-fNTt$HO*Ys#@PU89h~)W)*WDQ)*rGr#MuOABOJANs6@Szo3=(X z;%ttyJI)q3+v9ABvyD{QN=CI82xeQH?Zz_ffU^tEjyU@AA4l$g+A6BgT_tfh!>|X= zzlBrw1?OKlO8nb4aQ4R8A7>w&eOr&@?q_mkBXHE~fbkrRQ{fzfa{sEP@pzmQhLJcY;hckWGR~Per{J81bE*cY6+0d0 zjA6WxsPjM0*#ke$xj5%Z=zQhWD}N!5i*pgq)i@X9T!wQAj{fD3!Ca1Wr6gX_jBPHC zIsZG?;M{<7EzWgq6i4a5v2Vn&aBjjGH^^-a92>`J`AroMC&uw{l-lETWbC$CH~~(C z6XNt+j~?|b5}ZQtDNcrykBttAzfAyRn zI42s#yOZE5!N;8xSHA)@OMyED?o?t-slduJb!!NC8r(T>o2;2|r^THCcRB-`UazD( zqw+|uq|A&v3+`;Vv$g=?oE=x~0?O0=t-5pKE{r=D?tHj&*Dv+!b-x z!d(e>Ros;oKq1Zf-~A`9l6~COOzs-EYqqxWtc|-q?mD>Z;fnrC6%*Z{F>p7;-AGSL z_pk}>_PCqkZjHMc?iK>muK>7P;wt4=DSGv`!QBpbTjd<`OV$p!JL2xt`f+#0-DPa8 z-Efb>-5qy7+&ysj!QB&gFWi4=m|DYsxQF5%fO|0Rfw%_^LQM+p zA?i`O!aWT42;9R59swNLGUFbNdn)cRxFYzj>=drr0t9wE?n$^O;GWpxP1eb{r;PQS zhIA0i%k9(%UpKS=u{f~Pd?%lZO<92Z`z`YUoLforyFT%YX_hQ`3a4*3%`u~4d z_zK)BamSqhn-aL!;9iS+z1U_KaBpa+{iX3@h{ z0*)KthPW}VIsCg(3&TxtbKDeH-~5=|LIH#dx5B+0x5m90cVx(a3+`>WO8i@-$yNG~ zduQv%z03IT!TlKbUfh>)@56lx_kP?*a38>Z823Tkhgzg&)72lveFFC}+)@1(ez^kD zf7}1XeF67r+~;tg!F_ftgA#w!gL)B=bfy1|6ZaL|_ik|&syE3Hax%Ot@g~RH5pN2-Me(M@n;CB^yy@|##*-O&;7y~lWNn3fT0GJJ zQO^wGS6cwyOf3>`7QFfJX2qKmZ#KNYt2uhJkM{4)(b{-(;mw0Lcblk2#UopQN|_&T zA-n~Qf58@px3It#X&=R23~yb$#qn0aTLSMNcuV3fgSQmk(i&#g9BnPQg19 z@6;B9cN*U5#y&$Cs>E4%a@6RSF?!>zquY-3Do{e{{z^=o)Q4HA&yc^mqyqm;14o}3tAsJmm2T$ogo~OXd z(BA^!b@3AM^kfY1LOiAUc>QKuXu?{>Uf z@#ON~&`Riz7L0cn-rIP0<2{OZ58eZK_X^-X1yEJ)H^>L&@gclN@YLbI^_x~7!+Qbm zalEJTp1^wwZ&d#!@xLt|?-@M#*^l?^fB{c$0eCOsy@vM^o;vwA(y{eJg^E%!e zrtX_~Z;g$ z_Z6PJ3wY)&K!v^;)WtLRKi&^`P3T9w-|>FJ`vvdkp}N1~{Wi#w+5Iti#QPJ!5&6IH z$HyOUG|Qi0v|E27{7LaA#-Btx+Zp*o=YM|+I^O_gQw^~v8< zSzd({!wSZ;68_rwE90+*zlw>jDwux`Ra_l^4SaL+dWKhU;a`J)Z5wTQ4BHL(UHlvIZK-k-{y6+G`j7A6`}i)t z_kS4h^(z2=4?n>V@FV;XUmyMlc>H+CPEGY3{~`PW|91Qme+0jhHiq=yzZw6QHW&X^ z{4x5Ee+T|O_;=#pjel25I~eir#eV?*K76hGhDYhYu^+~NQi?u;|0w?BjUWH97Jx6m z|IwetQ~1x|EAhvFS^>2GS^O99pTpP6ZxC{O`w7{fPf7{!jQK{)+sU0RaCu{KoS;z7c=@m-#3DUxQkWL1%nA zQ`4D%&g66^q%%oFLT4g66A#$LGpT^}7C>hTaZaf)3a{>h#DLCpVyIUDI?aEg|LrHz znV!zf;-7)ejC5wwo#@hif4f#Dy{!?7NN5gokaz(7@Z~Pi2myymK;i1nvR_FJIl~nmd;rH?8NWTI_ns~dV|HGvjLs0 z=xj)5b2=N**_6)4bhPptyw-oSbX(BbQiVnrb89-=(Al2Owsf}B6}651UjeEIg!pu zCVDa*bN?d@l75){Za}k|O=v=J9 zhFlmflkxI4MCVF6*V4I4oLAGiX6$NQM@OCfO}QIP)=hMtqce`qBXle}x6-lcBy=1) zJvuHOUkK$DKz%M9I$g~yY;*!T5uK3E=*hnU&@tk#?37MPCljiiPBG|2kQJQ~Iz#&3 zxtY!_8l%_bHahpxxm_6UpmR5!JL%jtmggSTn8x2n=RrF63;zSH(}W(P^RTit@=-cZ z(Gl@ie+iG%c|y@D`$>Zl{qH<&{Le`AS@o!9_dK2V=)6Ejo%89uDC0{qs#T3-twZO#Y0E?Dd{4Jgm>=l;IPERBPkZxrbbg{c8=ar&PDAGx zx)aj*l}XT~3UDsF3Py`60}Tbl0T265UnluB`m3hgA&n zpLACj&uWHqjTR$4tR8>lrIx3_mwO(t}-GJ_6bT_1XA>EDW?n`%Ly4%s+gzgq} zHhj_%QP+nF9SK+-+dEZXsOPojGQ-4oj^HR_M@WP>@C?wO6B?rC&S zR{&+7VWMZzJ(up;;ykB~n$UT4&!>CApl;)*dlB6}-HYkoK=%^5SJ1swaxZIh>B{+E z&GAaQ*GT9px>t{7zLxHFbgypRjX7B^N8~3=q+?_rF%Qw z+lF9w3<2(<`vBd$CGj4*_tCv~2zmd&7QlmaAENsR-G`N5N{IhaGndEdO;7g;x?jD{L!OW6en$5b@qeoPqci%P?iX~wY;)Tb zy8oj$A>FU({zCT~y5CFUw=#a$=FJ{z`8=y1&tF=JGq;KQzDY z@K3sb>8#e%8(%#(pKNaeWi%_$n~2_2^d_b^x%elcHz~cz+NhpsPxQYxs{iz+ruR3& zBjYrKdC{9zJWBtCe+GJs(3_Fo-1KImH=9I7|9i8DJ?rQy^=7B{cY1Tun?t2H|23aN zZ!Tr%{^yaDdFd@kZ$5hS8_WVj7^VO87FHffq_-%&73eKSZ&`Ya(_4z3(tm-eEkOEQ zS{|2aAH^2&S5(W3=PGT)XuP za@}c*pXjZ}-OWtbC);}3k$=C=xt7K zTY6ha%9b*2CF9ogwrLDiR7QH+(c6RG_Vjk9w*$SM=l>dtZ7-)7y{UK@!?u#sg$Lu!YfUrgH?nL+Bkw@6gt%MwNc} z;E~>u;yJ4I&^w0S$@H4f;zWAK(mS5saVli`rzgJxQY0r0oQ*;66d6yYciO;D?+khl zy))@uL+>nl7t=eN-ud*-p(po0D)BtEda{7@E)bFn>0P8rwEq%%SJJzb-sSWzQ=!p* zt{AefYHWH}8@6ld-6WptWW1i<4fJl*c+EUcJ*q6L$)absQF<=DoSsK7rsvb^38o`s z*I)vAees0G6SamK6=x!2Dx-W0tegeCTj-VaYI;@Ms%dzH-pwjkdXubM>D@-}4tlo_ z{PgZrw!rA!P0&cnJ@nq8cQ3u?>D@=~NqYCwdq@}_p!eXQ3cZKvJx1>ldXH*Cy$+53 zKQY$x6g~O3vS`i?RN% z=>4y)VrqRu?|VsUUID%vgy{Vs&L5RWcl9&9rrTfW{Vt(j>HRh!r}sw-lhB_81XHRigTH}b>LGg?!OPo? zN}P^hE`sR^W+j+`U?zeYHCUCNnLzIUWjc~L8^PbjknevL!yE*2Hl9I6g1HIiBbY~E z^XiavPB1^g0?H$Jf`tfHBv_c>9|VgKEJ3g+!D53Hg2fGTNrI&tn_#K7J%VKjmL1Hi zF$k73;N=NcP`0kJk|eH7um-^@1gjCOO7PD%YS>mE!mmlN*4XGe1RoKsOK=IndIbL> zSf5~9f(;0^B-oH(6M~Hl)yBrylwfm$%`}y6W{Wo3I0K?DbDPy6pBIF#TBK^{hMxI$|Gkp%MnZ*WxW5zH|rdMv>i1jiAaN^m^E zNdzYl$nSqlb%K)#DWdvP<%L#5ExPstnf-4D>^0$dn@fw2b2;?gO!%1*`iy^p?z$Unf zVBAoO(*FiP;1GBOu6ooSpP-|W!bZ>|$O!_1sPPjh{U=a+fjq_pqWM8G$RaTM9~1;N zK`F>erRb~?f?LF?w*Z1$3FQ7?08-)(f)@$yBzTPAE`kRL?k2d8;2wf|2epLc{vqZE z2_7MMh~VM2)?g&iy8yxC1pk#1PY^sw@YGngrwN`Tc!oghe;Xxup5TQ6o78=Y;BA7J z30@<3MF?M2V7-#B6TC_A#vp~@ts(mzg7*pDRUWmT@3mQCe;}i50V?z{VIwu45Kc+( zDZ%dqpAmdZ@Hv6H^C$R1@bVU*@M;Sn_?qCG#?Z71_8q~`1m6?6;>3{GC;lu?0k8nJKM*rph-;fiIPdFjr1OuMNAk@16;Uw}nDd7}^lMzlnXi4FP zgm5at*$Ag5oQV*^=?JGGG|C^Ujib#XoStw-!Wl+MWVNNl%reeGIO`C8cESY-|4uj$ z;T(i>2}bV%gmWvT?qOcS`6W7E>k)eaQ+FYGTv&zF>=sc*v#Q}@gzFJ5PPhu;5`-%f zE=jl?;ZlUl2vY3@f?SsHAFXXTmsgL9ZH3k&wrm06$}N&`Rl+q0)fPawnsO>bwt)7} zEL@XtEy8ugzxEK%x~9tdgxeEtK)5;KhJ>34aw8cxZbk#!R6KeMAl!mb={(_=r?T~O86b&VT3mm9!_`_;Sq$V6CO!;GT~8# z#}gh+cr4*Dgz7a-kr*CAc?D2~PLMWEBs@t+btk8^c*0W!a9Ybicn0Ccgl7_-M|c+D zITAhFMD;5`^GJ9;;e~`|3(zZhQCo%Z62i+R_fkSR|LeL}7=U~QtXAM^!XDu@gf|KP zTEgoHuQ#w82ybj{;~7Wj5LyD3!@ta$&?WQyo2yA!aK)u z-re#O-b;8t;eCTB;R8dZA0m8|P;UW*j|}zsm|=K=@CCvr37;i=ituSdwJ8jdJY$g0 zH3s4HgP!H_MHycr)QA5jO86?_r-ZK&zEAi%;oF2t{|VnDd`tJBXZ?=&-z9vnF~){I zApDTF)%Pc-KZS&*q(3$NsT4`e-=_sj^l$WM5Mx^U(<#5=oL(7TD+QT4L~{pIK{Nq-so>hMor#9w#2tfZJNK=rdc{Z;6%K!0WWE7DiWuh?WA+L8XM zlBM*&jnZG8{>JpzpuZ0NH6^;1jBB?5vDc-)0sZxqM-`Ia|0rWac~s(W_&1@yHT_NL z%Y{#0=|BC=TLAqn<#8+ZIGQ5+LVsKO+tJ^C;BN@&?@0eq`a99Tk^au~kE6c}{e9{0 zN`Eh*+KvA1^!KE{#~_jZzmz@7-}byWeYFv^e){{-KaBqV^be+gK;xu;ApJ4=FU~_` zJk-qYaQa8lKSGhHlp~d)`aGKcf5dZ)@f@oR9X+1@Mf6Xge7P#jv^GVJDk}H?$~cSu`Sj1Ge=dEs5tyv=TBP(K`mewjwgCDU)4zuPCG@YPe<}UT z>5Kl4re9%ru99+B4>4aWp6lov{qNtPqLNGhCi=J2A4fl?Z_)43x9R)z9m#U(do6M> z((lmksz=QbGzR@p#y)+c{QBQ)LcgY;(k}#%(a+mfWu~PfQR(^$i2jH?-c0{iG1R+& z7`HW}vG1UNk2vq7f0yzr2BZJ|d+9$Q9<>F~zh40~$%Eo~i2lR$jq>ZzWAy)`|2X}R z=s!XKW%^Ije@^gE(f=>~XXrmYpc4PHgGc($(|Q=Qf4@uk`<*FB?Js_ZHuP>9?Pe(tn*B zjYl*G(fCAD5luie8PSA_Jer7T5+Wu3207^{Pc*q;l>RH)Xi8&DO*B0bM1Lbv+eGVc zMxtqDlr2D|%s@0N(Tqehi+?6lMQsPIE&kbvW+(dls8i+6Nwg%BWhbP)=bWT8ii&L`$2;Wr&pi8}M>Os}L8!z|F7`jDUo&P1YInkCxYCABVt%$ZZ_BLt??cZ&*9nl^{ z+Y{|dv;)yjL^}>;?M$>wi!}J%+9=WPhHX!xW@<|RiS}xpVynYH(LO}`4x9}M(f&lD z@R4i*(SZUxNXCO(B+;Qn#}XYzbd>lHCpv;iD}Rd-|ItLp5UE{YY?H?k9Zz(kU{26c zJ>QdwE+smJ=nSG$RY*0dwg95j%^c4pQX)@u7SY*aoI^Bv_-{PoJfG+SB6a2`y3pia zOmxZEW-cSTf#`CgtB9^Jx%&JsxmOciLv)?k`U;3hZvh5>BhgJnBK6TYB8$k@Rb=i& zE|I6eqn~Vt=yRej(IZ4XqML~VqC~2MM13(LqIhh#DUs-ZlnEejIf+W5nn;U(lR~8Q z-$ZXAQmRgLE75I4cZhv^%S?19k%+&11d@9X(StZMWz962G z=u4tMh`u8FmPqtJQu0l(0tbMB*c>r8kUgKe=(-e72~OlXKG?3r1hWp zZz`mCrX#+DczWV>h-V;Pns`Ryg^6b(o|kxL;yH+CA)ZarXEn^T6C3?+XA#dyJhu?e z)nWuc&yYPI@%+RK5--q}7J!`p+do1zyG4i>C0>G9Z3+Td+*DlBc$QLz>UN#LQ(|@U*UhM&w;o zUfUgs_axqlcsF8o`9r)5vHbE!x@`%GcPHLsP>%Rt#QPENMJ%!(>o$n@As(y$@&3f3 z`LWV};aB2s>_do8B0iM(=*B~Q81do6M-m^=0t`&w{}UfWd;;-*h>sKeu^Oh@KHh-U zMqt`LnfN^7Q;5$bK9%@%VkQ1+oBN;m+yRpKd;woTEczc`*oKHN zR#bW=FC~7B_%h;x_;O-fQm!DrlK48}tB9`=k9h@9wXQWh*Aw4Fd;{@~gWjZ>al}@O zF-V6vAa;p;V%Y-ps&Ym{08xR#BVA#mHQU)+hV*!{I2HFpZNR4pA&yT{0Z@g#9I7`)pjtbNc<`B zXM;rIM*l_d<1dN7YOAzS;;)CYz9s&SxLK3$iGL;jf%s?QABle&P)S$63~CYoMy$o3 z_>Up~pMn(qZ#z%MC!K+00+P!}CM4N}WFnG>N(XL^!3NSbo9k<3Uk3&~6*GiyNm(W?}#|B^ntjCvO! znUh2g{K;J6S9^gN^ODR@GGAjG&jKV1>PL-Pm}CW#MM#z)S+ot2s4F0n#m(cAB>x~; ziewp*rCTZiDE&9gBL2zpL!K2$)+SkrWHpkNNmgw_B&%qE;y3!AtWL5f$r_4EceR#+ z2|39+BpZ^fOR~N&tT)84fx)ZoK%(khK#WaEjv(2LWM`7iNwy)`!eF)}*@|TA7O6+o z+qNXzk?bJpdKVzskz^;8D74K;vJ1(+B)gLAMY0>oo+P`I>@gOj&i`!+NyEJNP?de! z5XpWd2b1hia-h&^{TKTnlY0osVGW){-~UMTa1%X}k~~eKwg8gHNuDBkg5=3TiugtR^^Beo9)12NQEvp|d4c3>k{3zdC3#7* zUM6{qb;~-Z&Ka>0_hTZ~5 zep4ix=MU2Hq++wqf0F#w`gJrNUnQm!XhLOAL^?I;#H5pxPC}}bUoex6O`L*sN>aJ} z7eEswg>;&hiu7-!(}{ChO|Agb8@3rqOVXK045>B;(xrz8mnB`5^dF=vkuFENg0Sf=fON${miSjDHR7+P{7=%gNLM3Wy(J`FgLKWo zn#e5HCS8|w9qrUDt!MBXknTddA?a4680bI#*WH_RKLPJU zx~~cue$xF()fd67hx8!Q3rG(pJ%#iT(ql*uB|V%}Z3G5$1nE(vM-F+^3xbLMhxA0! zV@XdSJ&yEvO>QbSkEACxU{cY4-QlUEXNgnkKk4bDXON!Ra<(I>(tpx(NY4{P-vW`I zKY)>5Na~PYM0ySB#iW-B@)8;K7C?GAsk-waHTVDNRisxB_epv!={VBsNN*&)o>VEn z0<;UI+PJB;Nv$?Ss&9cvUD8l0dZa#SkF-N7;%^v815Ksc=#wU-QOi#n8^V+{7oKbg zT$pG@)~G>E`Wop7>64^4lip8y3+bJtw~{K^CpEtUQuZAt_b$?VN$)1TM>EUpNM#Gq z_5-Akl0HcKFzG{Wq7Xi!Y>j!0^a;|(2cDLV^eNI8N&idwjHEnm@XwMy-(X1fPe4iK z@ISh$FOkamKYfMt)i%p;zE1ir=^LbbTL9SGGt4U8Sx){(3yS(AX|=XMY83|)GjbocO|lw^`oBMs${E^slz|nYGXTDL!4{2 z3}kDQZA7+?IM*dxUks!F*#=}Awn&5Dm~0EOO~^JA`<~@$ePY~CEHV|b|c%JY>z=LajNq_ znb`uAy*JrGWDWWLWc!k-y+EbtH9vq%y#*+z?&@G+I7Gw5Pj;9%4<|c9`4z2f0qU>l zXtJ}(jv+gd>^~A}rf@vjaSExcoX}=9k7Os2ok4ao*{K3PrG=55Mt1rj#U!377_~b{ z?m1+alATL-5!rcU7l>1D0c01BrmGGwmRzO(hV3%4%gL@3{}tM=JG`3gF0yOLdSus< zd1Tj-jU&6B>_)O1S_U<$DX2FBF)T8d%qDX*psl4jeFamUbjZvWpdJIVk}M=kB-$s7 z$h7hs=9Elb`;ZOke^#_r$Qu2>g{&sKSui7QmdU-9><+Tq$mH-ZJ)6*-hT(3q=g96M zdxY#>vIodS|5e5N4dy|zhshpNk1`|Uf0XRWhLG$rvd77u(AD*ij>zkiA0oD%oqJPSw~OWN(@t-Xc@VPo`c08YkJiWbbJP z-N^^!jf{Lq-pJ!eWIvI8O!hU|CuE;X?x$o!_dnSeWM7HjeE*yMuO(Nbs`U-ow`AXo z{hjIL2eKbWVXBj#$^Ihyh3pS$>{qhi$VSCqoa$d3*`F%0?LQxnd}8wP$tP5R+~|Kk z(GX@5^2x~M6+mYV-T&lMlFvat75Vh!Q!D-)@@dJZAvgLjS;9YEGYVz~@>$4dB%jH2 zGIMK4bXM}&$!BZ9lKA(b=$zz>kk3UvAGy+h@_EQd#a}%0lP^TR0QrKNM0dXM5YM8@ zR_Tk$Xzu^>CCRrSUy6J+@}9%S%agB6z5=-%{+p?(H8l7C`6>cl zm0XFxZbJc9Cs(RYz6SZ4oZ%w`<`8MQ@;BQO5o#rvUk?%0@knhyke~bKOa;5p?uaL_tfJr2Oo%{{*H;1Xn-zNWv{2lW5$=@Y^ zPe=7%;0NUTmp{6?V*Z%?69v=j_8G+zzbGc47*F{dWTCEr#F)@{ zCNiE$C?=;+`cI(`|6)%;F_joos+8t~E95Hx%`*+fToiw!n2};yflWs-y+O{<8seXc zVpcKK7C3|h zZ`K$Tn^SC|0s6Dpieg8Kt%Y+N8Mmd_uEkJnPcf?e!mty?ZWK!VDRxmXW$bG3yHo5% zu?NM!DE4flZ3B|qg7Q_!LLVc+^nznAWB^mf{SG<0wv{IG*A}iW7!lCn;Mos4c)S%ez2v8pY`Y zr(n*cIEz9AzffBM#W^PBJc-=(G$5Il2W< zgvQx#jb@~XDH4i|B2~_IeN+kcE+BxC;!cW+;#P{9;ueY#3M2joFUZ>{ZZ}zX=r$D9 zT@?2W9m_b48xc!}Z(if1XF zr1-CpJZ0)WO<}}e_x~Kl^M>sOiWdisN#e^CZ&JKM@jAt;6t9hqzA<>Dc#A^L|Aqej zPZOeew*^qVPw@%G2NYWWDLxYZkB1mOrTCiSGm0-MKBxGi?aK7_6~+HFSbxgjP<&7E zErmY$526%5n5>^Dr=s|oasrB9DE_4QmE!jXN%5P({6V2U%ArpFq8y)cJmry9YDdZm zDJN-=loQD~v1TYIrJRCtGD>s!H=jGD(f@L4${8q;#Azs}qx>7Cx%qEDi&Ad^f|-$W zR?3+uXVyKay0f$u1uz@s>_d-pP_9HdC*_iqb5YJuDd+!k9!h=wr<_mW+tn)MM4iDEA$km>WN3Vb=H>P}r zaudoMC^w}%l5#W3y(l-Q+=+4v%Izq(q}+ybE6S~h`K9i*t%q`Z>1_wf9d#kSdOK6@ zPPq%EQT}o_1sGklJt+62{MRruWi!n~DEFq^k8&R=wC_;L{*(t%9zZ$v{-;#>-@+)h z_){K6c{t?}WBHGwJdg5d$`dJ%p*)UKo&PD19b!1XwJA?9oF`G9L3uKzXnuK$@t;O{ zdTSfcnUrT!o;7e%o-KIP?<7f@c@6rxmH0Odud=p~dQ`{n2>fB>$byq5Ax z%Bv}_8t^v;rECF;Ook>ncv*MDz`N>O!X3s59EU zRy?;$)*Y00DyLv5@1}f#@*c`3DDS0wnDRc#2Pp3!!aPW+mEY8A^#5_nM=2j`d4@;I zCn=w%e5z%jRC|Fm_6+5-#(s|S`Ib$Os>2tXDCJ8szHDl}N;M(nYm}c+zE1fOuFtrvK*t|52*#sIH;fp6Yn29jFeZ z+L5Z6*G^P>QteE&8`UmUTK`)%s@hLb+9lTGGL%OjOu8r!>Nvx&=G?yDt-Q^I)>_4s{g1gJ;&pQ>=UTYr#g}9OsbQp zMER?eh3%9UFZO9vr&FCV@JPdFN$6}Uc?+n{X{%G6r(n9)1yrK*)rC|SQC%V_7n|s% zLr8W0r@DgbDlx8XF;eL2)~33aDyF)Q%BQ-X%BE81f2td)#!=m*V7ji=8m))QX$&ft z%2Q41e`OtUcBw+Dp4frH>!^so%8HC9p}LbQrK+his)8z4cwMm+hHBuE#}TTVscxgX zg=$p!8$znvsqScV4gXz|ayQijRQFKbM|H0TNEIsC0#xpUR1XVS?*dehD5UP>F{;0) z9;f<@>ItgXsGg*HTJUNMppu^eDdQQc7pT-0K=mBe82zVuk?LhCCI0F^RreLDS6kb7 zUZ?tq>J6%Qsotb|n@Wj)JEO*+Qagg=zDMS+6yP>)AFJN5X~Q&CSqJq7iI)Du%rq{}r7^(54jQBOMXD5`q$mWNtx3VO=*)YLOk zLp?q9G}O~l|4l^&Kt0_6*%;I_P%Hg6xigD%7V24bA%)Rj0Z{*)dO_+rsOO=cQ;>5h zHic2I0ET2<>iMYWZ#~o^{<``?)XPvWOuabuBGiixRawm7m!MY4--M`_qF#D{5sz#Q z^*WlA{<4e`U6J|$>XoQZrCynOFX~mOH>X~edOhlYQm-M2t5M4 zcH0i|Y)`!t^$yfK4xBQhovC-x9^LJ3)O$*m-KqCbA-z^g|4rvjpNCTKO?@EsJ_6pC zdVew0ULeK+3O|~15Vh!keaKLUhfyC#eK@sJdusI-Kz*cPIGXxD)W?kF8F~e%kEcF? z`ef=8sZSczQt4{?=KNouM(t6bPJI>i8Pw-Xl{2Z&qCQ9Lv)f$ibE(bczn=94)R$6U zNPV$zUZkrie)ScAq+dpT1+~(Dwe46XkXO{i0Y)ZYS77u2^?m((MIQCk3Y ztzc@JH&fq6eG9eGf0>sdzk~X2>N_Px>A%Ukhx$J1dxt#ts}#K^4>B?#^+VLJQ9n%m z6t&WS>PKaKjQUCH$Elxa@hzvx{V(;4)K61CC*WtOmHrQq)X$6mg@Kd$CF+;O`3kks zf8ELJ)L&A+LHz;so7C@6i~g%--ZmBArPe2ZA<_Cz{UP;d)E`lc?AIR;^f ze=*d|SJb~y|BqS;KDF!!^*1em`a9|$slTWGL9^*Tf1>_*tmjwiKdFDC{)1ZSzhO{+ zlg9pwk?|Xw5xD{qKO+<9d5uiO$b5`U%*b?%Ou~pd?K3hdBa?|?u7H{;j7-T0j7+6y z6=rH>DE~B!Ov{Mqzw~MR(=#$BBQr2E3nMc!GBYD`{%3ln4gg)8CiglMHyL8U<=8(Fe8iTwbFfx_$!{p8CgPyG|5to zEX{}r{>U{e_Wjfu;WJ4wZohzjBl8knVFfHD$LBx%$#g!!wj~?vRIbG z%*@Q3FZngC8DHPOYHO<1efo6I*n4I)-c(x4(^8i|%A-?OqV*fCm1*5TYZY3@(OQ+( zjCMn4O;8bT9ek=wANDTx|4Nitvlea32CiQYeQNaj5sw?wu9CtwV&3e zDysdP)2a{oTZn&48MmUfbrUt1ZIz)Cx1+T^tsR=qP5(R5I*``RwDzI33#~nA?MiER z!S6Oe(%M7Yibr;Ymfix;{b%^k*EkGU*AEb!? zNLokHI)>KK%HOc5tYaIS*73A1rF85*7*XsU^LG~v@WJ~$$;6UTt@41TG!CJLb9%;b+s5*HGl!0 z*0r?M;h)y^$|)Vvx{;Pg>n2+F(~|Rl>lRuf^{rb4JcicD`JdJuwCsou))TZI6#F4skJ5Tr>_=3S`kVZicpk4u<9U*n(s^1+|7o>owP|$* zfEq^2mXNyq5ktQP(DG@$Mk}DzrxnsFXmx32v?5xGAY}_sw5iI~J>)}nDX^Z5)sX*b zS})OhM*PpxdY;yEDk>zjUZC}2!)7>@_|tktMmhiMTCdakl-3)x-lz2@t#<_QmW=u* z09s1_X}wpEhV29Kd`Ro#+C%H3CPeEKW#}G0qxC(l&uM)_>kC?6Ny?YHD@FLVLCWF3 zB|ib^u705Pv*2Y%X#F&l^^5p_HJ$uU`%qec&|a9BjHPP*9?@W6K z+B*)V=wAV7??QVw+Pe;g)J9-(_oTfaZ4v+W-n5%l+DBJWE4Hse?oaz5+6Smyp!tPi6-hW6pK&!>F^ZFQcfeI)IpXe+g+eKhT3nshZPk9q~5eY~l4B5fu3 zv`>=p&8>2kpCQtMfnYyJQ^O;Kja&_WfeW7SPsP0PP2cFb@ep>Ax6{(AI~4 zDf&2Vi}n)|dQ!%xXt!y%6kc~OTYzp->A%1n+O8NLZNEVpe27zjb-P$~t%y#&J~5s8 z?@L1aSK2AUr9)(|&>WE3{t} zs+VXh@gHIk{a0098}QJ6gZ7((e`^4y{SNJKXunJQQ`+y*{+Rarv_BNs2Sd3Z4cW2< zs1NQlfqhQp?Su`IffmeEU1v-z%i*?S}?K`zLvn?Vzp1-}rx{Q)}$+ zbS9+z2krl8|4I9A0sqy&X#XRRbu(J|N76gv&>5G`_;i&1Yk%E#M_&QanTXC*bS9=V z1)WLgOs1$h`W1lA^I@J~nS|HwMj|5KaJG|Hnw(>5VG)6-d)&J1*Br!ym+S?J7U zFf;3Ub!MgWKZ94Bg0bhIGcTPv>C9bw=*-pl#a8-Xr_-5_j@_MmQYEL?Q3sP+Xro=ubYhOD1OLRXS)iXMf&S7*8qH_qHgLNA^WX}Jc!|5C;xkn85 zN#|&B9z*9OI>*vEfzEMswDOw6}OB96INYt}B=Sy2%Uai2ipjqH{5wOX*zFkPFpibVU3GT$9kbQv6rRDEhB?uEnaq zz}L}vhtBnM96C49d4SH1bZ)0}6P;TnEUu^+W z_ij4(G`2x1@u#D<1A}>x&ZBfh|2sziJCB&?V|1RP^EjO+CGiQ}hURb4>CkC6U;$Wk zMEvUs>N&b}o}uH>Dd_lgQaS;hTJS?U-O+5d{wD*fIz%TEPWexOo5fVkmvnk``V!Kw z0Cdb2pt7E&^P)s$@8~>F=LJQpdwz+I5_~!@O9}n2fattN=S@1V(|JR8rTc%2jz0M} zemd{c`H#+fbiSqYKAkV=d_d*cgw98FK5l9aMmnFG>Ypn^Ro7bpov-BaYvcdM zRQZn1uXMhr^OFF6knu+a(~bR1N3MYM<8O5Sq4PVPzv%oy=g$GM#?$#*WohL9H6c3Y z{BMne1=hG&lVFX9H6hmc3RCxKO`yTnM8-3*@l1*}1=eJm)|%Y-mHr#&R9G`(O^r2O z?Zlb}Yg!c*0M_(aGh)p!@CZh>fVyXE7A$!Sux7>5TYvy&Z}3=im@0E&9fUPE)_Pd; zU@eO^FVTYk90yuvWkl{kKN+A8X|XkF_e6$iB5&Q$^ZPTYxF5wg9ZPvDU#_S7UUy>tpST zwE@;PSQ}z(j4r_ZwqGz-t zmePDI*#g9mwTp@FhP5x&?pS+a?O~|)9OB;_Yac8p(2o2rRk$ky<8tFxJ&r zhhUw8btu*`SchR9iFJ4lz&c_;E{{jacy!~$Iu`3htmDLaJk|+KpC)>e_)l&g#Xc45 zT&&ZuMDwlFvChCcQv>u0oZYMj);VU@=V4ufbw1WbSQlVjI2wQP5dWoES72R+rEmTX z!kh1Iv2Mk>4(rA`ilwfAu*^>Y)=gM98-`m3RRl8z>ozgerBD;Xx)bX` zth=!8!y1cqFV@{yqx8RFt4A!g1z2Yw0ZiHx{kQU=IhI(@ zWA(6}!K$#-E+8aN4`H4aj}rfe4eJH0SFv8idIjqxET#N|sKLC3^(NNqSa0ai5C-dQ ztPg8H);n15it(O|?_+(S@w$_bu)e|i80$-{Pq046`V{N4VT>di{kN3h{#~>Q?})->|2^`dzaAz@8B6PwZOQ|3bn3#!`oWHCdS# z*1uTl7HGs{kBdD4_ITLiHyAxO^Rg$xo)lY&KlUU#QQ4CzTN#sUW_wEPnXwV)RM<0M zPmQf)AA1^unGSpU|E~)6jDnfTU}llWS!GoEk1gl_rhj`5?9H*~#9k45F6RpoCU<=u zRkb!0{6^RtV{eAN3HGK9et5**0{aN;EwT5--U@pc?5(kP#NGybd+cqoN1gw%)!~1r ziqd~;G9K74i+wQm zA=rnBeW+$o)zuat{6}IRhb`i7EAhwH_dnRjHhApg6+3ib!sr()lX zeH!-p*ryx(8Q5oHpCc(}VV~XjrS7>61NM2wxBy!zIrfFv7hzwHeKGc>;<=>3h<#aO zW6NuTt4feIzH(+0feSOoX>GnqKn>1d3QE$PHuy4hF5_=5x-NJAi_U+hr zihW0e$G!`Dtj^V|cMtZ%*!N;TfPEjfQhrrPGe3y^&}jT4*pFk^`v2Hy{}Y2p?5D7; z`VqS&V_Qa}|F(_oVLRe<>(SKmu|shN+Nr+e-Nwd_v6Y@rl6`Eo1=Q)-1$Iw7 zrSa&)zc`=9eii!}?C0h2S?uSUqLTXp_Dk3=4tZY2ex>1QoY=2nzm5Gm_M5_>-vY4T z8p?VH`#o%>|4lCT`$N$Wapu7O2xk)PkFkHj{sj9Q>`$@3#8z7X_UG7NG`XhkSG9rt z^$_Q`*gs-_hyA@KSBd8S$Ns57Vyi14$^8|(W~lZ5FYMp3|Ik^A_D_TP8+)|=+yCN> zhy5SUxH#i9u)&BkKF&lq6W~lZV5_4zL-+sAq&QRJDE-HoT*fJe7{HkoXDXcOai+$Z zRshos0j6u1ac01o2}g;46UCVs$Nc-BMo&};*#aDSBXDLnxpU$yhcg$>A~4wiTG>edN>>6tgoVqVS^!< zx&p%4xbfg@injsIX1HtMY>x8^&K5W~<7|m@B+gbi`{Hbkvm?$nINRZDJD?Kg?PXMN z1Y+!jvj@)3IJ-&}bN+XB!`WRYYUG|c`{3+_v-fEK@Wl7SITUAqoP&h?0GtCgSWW8S z#>P2h$axr!5`UZ{lvA(9Q8;Jd9F21d&M`PA;v9=}ymY8u0Zj8J82m{%BZq$zJ++SF zoQ5O%uV-;4&Luc!;V8k!IUDC3h1b#Za4y6-ALjyHMf)$pxp=haQk-jWF2lJJ=W?7Y zMn|v08M*wILf7KlfO8$rX#IC?#JNf5>bc*7?EQoJR%uh?)CiDn+fy<0kh>oHou=I4xa8 zGjwol9JMJlNP~BAdN>|VisR!%I7<9+>id6l|04|IjB%1dI*t;59N7q*0;e3zOJ-5w zynxfkc~)Rg<2*Bz`!V}JD=lxF?tqX;mF;N^EJ*l zINuulcR1fGs(Nws3jc_sPWw1N;fVN46z5l*-*J8$U03e{IDg^RLj5=H1UUcTj*C-& zThz%P=U>fV+wM4nu5iawQFr_%iaR0hB)Ai)N9CWm@$0T!(SLVx+$nKI|C_E{aHqzd zN`rN-Isd!U;Vz6jJ?`ANGvLmSJ0tEa!atLYGdGF2v&!TDaA(sUHml*zA^tgKoJ)no zFOT!!&WpQ%*z?I~b^+D@g1AcjP5+DFu7JBJ?y|Ux;VzB4IPQ{?C0juKm&-N(1XS5d z{7tSp|KqB||4{W6#kmsh%DAiHu7bPjAX*!^t1G;u;I4`L4DMRE=isi5yA$p@xLe__ zi@TxltS6(|0&q7lSsUSQiYwx;{Q4FMx7PnH1i86EZmA4iYikK@gDYz9s^5QcN8SQ( zcM!mi2EQ}zVYs{CDs9Kz6?Zq>J#lx(-D7x065Y#W?Sp#&ZjIl!!Qk$PtNs;`0_aW- z#61M}AY3i}gD9>(|KlExdou13xX0lhiF-8eQ3@tJxX0ig+prnW@wg}9o`8GefNcnW z3hwDO9#{0=Jt!WkbT-^I`&%?b6_k7$da4*2UNbnaLhKq48#l1uq zRZDsq?&$j;SI+;s^Q&>k;9i4!6YjOR*9)8c1gt9FfP15EK;v%~z%979j`rV%I~MnL zT+x5`4%7c#8YZiadpGVqxc3g)6Sn(tL)-^&pTvC-_Yquq1yBt<+@#|^iu*Y3V=7U1 z@`MWMPw**R8@Gkq!EF!xH4<000A)D19A$*2g;wt?Y z=E4{~+^2CX+Zzk%U?i2D`pN4THkevJDm?k6fFT?z8D0R!$AxL*$O ze~tSi?l-vK<9>_#okq&a*DzeQM<}OS*q_AnbA!SC6>lQk-*D^D@3=$qWSrZyF>n2-{?yCmDe=c!08hz2-hz!^LJJ$rqIj#~ErzG$9dB{GCGeKQQyak$ zerdzMEZz!&lr6y1TL9jQcq`+rG|0kRWyoF)Z*9q19d8Z1HC0G;xK?8{NW66fvo79x zcq2DIg4__l&fN&_1-y;%F2~yh?`XXG{J$68W_UZ`ZH~7!o@@l(mU#M?U(@+Ec-!GA z@i*1gc3`4A;_V{Ucam{uM{E|rkJ z{1N*Kyf)sIcz5Alg?EEEug1FuPia2hwG9K_^~%syZp6DC?;eUu&#`ejIrrI#VhgT{O>9K z$J633b`S4qF)BQ>1t`ojc+ZLd*+I{E&(|KA|5b|0{Q&PnW$QV9jQ2I3)_=TD@jk=*67O@oFEmUe zzZ%N=MyS439>w{cjQSP`???O@@qWS|AMaK7FN{Ak{#^L8;Lm|SEBjxkN6AXFEmtf5&Y%w7sX!!e=z|pKEUHIiNCZs zmr_nOuVwI;9i&TWdHj{}SHNG74F1tW(PQzC8@;MZ{P9ne@g#f^ z|B-LYsrc98pN22W@5>v3e};h1#5Y@jVmJr?V*GRQFTmGZ0RH)^wEp5}Ju1*BK$7W`Wqyve#v z8LHLWhdA%VzYG5!@sE}9ZUs}{TeSt?--oZnU!~}YJc$1${zLc~{=@i6((xa`e-vLG z`0*c;@$n`L|4C&izu5)+Hok}7!57*0tp+I=M@ID%uoynR=)51`hxpwAQaX$Uli;Tf zzKP=J_|M`i{l_oy`}jQ-Qje8kmhHfQrb&^|bNH{~Kac-1{tNgo;lDVD4*2n3F$}M% zsN#IR_TazKfbrkL{{#PR{4em|!T$vRUHlL6-@`YT|0?T)AEb0smM0TK|8>|7ida%rBW*|`7PB5d4Gs!qJ!7K!` zHk{2!FdM-<1hWfZ4uZJ|<{ZpIoO2uGyaWpq%tx>w!TbaZG=39ZNEyuvsJe@oby$pG zMFOS&1WOPsN3bM;=zpNEfC!c$7^VLLUY=lu0ik$SB3PMVHL+KbapV?=V0H1VQIE3P zYZ2^1ur|TQ1nWp>U4jk75d9B~{s(d?6zDBL0GkkON3bcuRs@?7Y(cQOqSef5BWUb; zB-ol@8-i`MM}PX;6YNB=g8+6M0`ELz?@FL_o<_a0FBoOh}{MQiNM{q5{9R$}A+)Qvi!Ht5v zK_zO~O~$x|;5LF=3C0Yf%~}!M-gpS^B)FI0E`qTp>u!R38e3;++WQF}sXYV_5Ijim zkikE!V0vX9C3uS9F#_2If|0iX0@(tTO0)<%buK|$^D9pEZ-Io|A$Xm@B`63y0+IK? zCkO~agXt1Pjcq)MGlC)g556S$n&2x{RIk`K1m8BcVfdav-SZIqK=31h`Nuya-;iGn@;AczFVXLW z%M$!SSc~VMgi{gxMK}S$-vs{={6p|Bf%0y8I!WhH!c@rd2Zvr)zp3oPkg@KUDfJp_zwrXC+*K zP&SBgHo|!bXD6JCa1KHd|2oA?htTMMIIk3%k8pk+ZB{s3kZ=jYg$NfFz``;b{SOzD zN2UMjk4{;Va4ABy3mDHb##oMU3&Q0I*Ctf@Pq-rC>Vzv1u1dHv;VKQ%;MI08#IpwB znuKc&JT;7P9YRt5a9tr3{SS@)hZ_=ZMz|5-CWIRg*a$ZrAyI9}7NFR+B;1d1E5e-# zws;lWMRU=AgW2oEE?h465~vj~qMJcaN`!s7^!B0Prh=%$=h zAJYHuc*2tiParh+|N7%IuK>~s;i-hD5uR>(K7;Vg(LJ0^cm?4(gclK>OL#uvc?uxY zB)ov|!a)PIlkj4~O9?L-kPu!*sNMn;O!sgl;k5$3ituVeee!QGgx3+?NO(Qr4Vqck zx{2`S(LA>jK1eu*@J?a7jZld{;T;O5v+g3iN1S72yxaKiCA?oe_nEF9XhPzAh_FNW zFyRw~j}Xe4KYY~W8u3@(s3!?qgmU8ow@CXBO`o}wN3b{>EU(4H^uWtgCTs2Q2+94Jns^ILHHiw$As?_en_aq-!O>y>(Am7!p~|y z;io40c|#&4z9jsP@GHV^2)}Ls0+ua6&r4nq!XH#rbN)nkT*99T|04W_@OMf1mGHL# zMm&GW_^0XlZ^C~G{~^@hN!^C(?LWHXsK=&acRaci(H*~GqdNiJ36-s*6VshsF?T1S zJ1O1CbVx_1psQq`?vw^U6Rg#yB6Ig=&nF_NxI9@U5f59bVs%TgIrE>mmkVqk?yK=SE9R$gjQ~l%}94O zx@*u~eF(qiki9nDjp?pKcSE}C(p|p}(N+2{>!vn^#uooZ#=i;Ot>|t_cMH0k(cQe6 zqlwD-Uw=AVE2rYz#zeQHyD#1C=_*yHyMv57(%p&fE@JCf0J^)<-L1(oYpBluboZpY z58b`Q-dh87mBD)MC(-@s9zpj2x=Qou9!U3~0iNz5bPuB|uK;?!hYv-Mqy^`*!bkC)G8r?G`>vS27wbdCN?pOSL1VYrm;<>E1~0O|{Wh2go1?u~S>rh6S-*#gu$ zT&w4z?CT|0?*ephl1H@#(7lE3t+g?jINjUmK1%m?y7$w)gYH;?$-dCNt3lGeo9?}I z?@^B?m+pNgs`Q`kgLEIJ`_K^Jk)bM&(RJuPPWLIgPY7Ng{>5(5wdl6#s<(h42BrUv zhpsC~PkB^1qyOEI?niXHbYGww(S3$)Ot+w$(9Hyy8iu^dtsm)@bo+FBbSvdFMd?00 zc%=KRq>KKmiq9LK7wNu1_a%wGOjl_>-B+4Ky06iFy|InwO}g(2<}JE!(|t!r^|$Li zx=QxxzHjg!YJhTnO!o`Ap9tVn8P!H0hP(o(xqN9nUy1)~8NX3Z75$Fr47%SFtxWd^ zq8aG^NHj6spXmNg_h-7l)BT0+uLdvruY3E0?q77Z_z$hpKSblwt;zp2S^p7<_?yKf z8jolKqVZK$!xl|QG|_-WH5pApBsw2WN;DbK6hxCZgc6-{V9R5D1vE9$bVSn-O*;~* z=NL^tRAok@MTur2nwMy1qB)3WA)1Y7RwA_{43M=!G<)MAnv-a5sWMm7A<;a85=8S6 zEle~&(Sm|mU?`-v0HM-{f3X)MTAFBaq9x^V34>W`C~+C073xQ#Wr>y}67iRXQVpoy zR+Moi^{8O05baB}D$&+Ns}XHLv^vo`L~9VOO|&M_S`BhgLekeIGRhyVKL`(y&MEesRMsxtt!9)kDmeg7uH0X`!5b?+sphAZe z9ZhtER6mkPiGP!&3^n~@h>j&P_y0{)`A;A^Q2-|qol0~v(J4Atf8wVRDdit3eJ0Tp zL}wA*OmsHUJIbE|EtR3QXxgQDBf=qJ$_SiW`p}breB5Hy!NS3|@B6^wVeWF*0-XeOHNGU(jYlia;qBk4cEa}@s?-I#R zz`D2hG(aVOK=iRNs4aj<-TyaHqECoERgXIBbCNHJz94>)=u6_=iM}FUgy?JH@rk}6 z`kClkA^A?m?}>gexjz#9G+>tKFGPP6sV#u$HzM^fe~5lJ_&n07CZ425szR~;@mK80i6NeXcu4$Z*2Gga zgv8SjPfx730OIKk&kV#f8ha+EM+*C86*-f zN4yfT+5(7WQ;1g_impt&nuO$CAYQcz5wA|Xruf$wfTf4EiMJ$Phj>%sb%{41R$Bn^ zkp9OT5^pR{wFOAlCdv?7{F@PP-gt=BULek`h_@4CYvOIh*tWq4!}i1?__6E-@s1{I zXJYjhAedc=cWZ1D-GlgE;ysDaA>NDlDB`_|4gH%YarqV~B4T9Q%gt#P5iF4v?z*%Pz%NC%F zUgIaOh6tY~euh}dKJl}r%Jal8G z8^r1sNT}W-etS?w+IW}veF=^H`ycU(_{Se9u>jrF6zBR`8#6J=LASpjKDPsRj{EK1umH0QEt~vi88JGA^;${keNy^{E|ELtf zi05D8{~8a8ehVNOk7QDk@ku5knZQIRY_douHl9gzhsk6lQqn9i@h4e}WPOsgN!FFnIvTGQO>F^^ zwSh8J;)cevG08S0n~-ctvMI^tB%7(m^whR!@aAzV$=%vKZcDPgc+|d7J4tpR*_mWV z615j7nC8)2fPi-+xtnBnk~2v5AUTR;Pm)7P_98ieWN(svN%kT6|K__N$^H$S;XIH; zpZrM!_xrpR!5;^cE=a8H`ggIYGE+8@buX8UZxtv730+3uva#_P^ zW_ksQXnt~~_A8jt|KwVdTO{#1lIuxsBDsO&#?cHn4;F{yR+2kO#*i50Pi`ksZvhIU zKQGw=RF$!fpX45rjO1PtkK{g*$4Txdd4%Kvl7~pt>%dS6bN){rt^FjA4KY7KVv#&a zqBNi6DO0gcBH};z5LMJBaY*#P{4q$MBq9lfIh4_C0d)_mTuhRPkq*_(N!}zWNM0Z* zNuDL?kvvUOk@Rcu5b_!QsHoINAXLvcPLdZ%UL$#l9cUD*i(9n?!#d?f--1Z}I;rqj?KZ zZTv$r@^_8oKT;*>q~nl|OF9ARc%ML3hAVzBKzrN4W4ug(kVyH zJ)KI(rydZJPD}bf(&;W~4ikZcZv{pKd|ArKVElwkF+9sN@wO-PTm!o^*!+ zOaMEP?nAmW>F%VvknY+brRZ)ZYY)=BNcYqs)#2XC)+=9^JBV~&(gR5MBORsxHHK8K zfK*rN@K1WkpaIguNXL>MPI@uv5u|669!Yu%=~1M|kseK|#NQNBuK>buJn4yI=q-Ts zBvPgP4M2*XN_qzAX=3Z2fW64^w(x*uE$=@J5q?TsWpNK>1NpE@=AoWQDO{g(S|4Ad#RE(HZ>3@SE%}5K< zym=HrN!lA-rB5n)o<2?b45?Ck(q~DZ8^B0kAbm;Z^`fRy-$1SZq_2{`Em^OTzE1k4 z*joR^eygD(eTVb|(szaGJ<|6FYy$g`^kXsf{ST@9$G>`}pOMvnWj-gHo%9Q`T4ui_ z{f_i2N%>k)sm{M4{kE~C%J-yyk^VsXE9sAnx zkgZtFxgV#T!d^sa=3|U z*#>0l@K3h>kbgrmx&O&FYO?AM$@DHjwi(%uWSf(1L$(FkR%9dkFI49IpKVLFJ=u1e zL{-^AO}6>2W;>DXO1874$oXHd*lyz4eJE>BvYW{EBD;ueZ?fab_8~irtR_5=Y+o{^ z{ABvS0wX(MsLDZPO7_VPHgykG%(~X$WXF&lL3Wfd9NA#RK6=d$*Er9IQA>`>~XOhYNkDm2eWM>ZmQb?Wu$<8CYfb4wLfJVwIfbR2R!CXRi zg&490WS5aC{a1g~^sgklmh39BYvl3j#&6iJBU7?ZrmldREHbr62>50)m+Tg@yUA`P zlRN)x4B2gDw`=@J)}3Tp|H;N0hI_~!CA*jGA+r0(9w1ZtZ>m4oR5XtdlZp82>W`7N z$Q~zqvWAg8VPH=UN|Uw8EQxkZ)FyLu3B6(-Sw`lQ#bkki<@}#@$)eFnt^Z_c<0s3> zo+m5F`eY?p&-jNff3l~^o)y|>25e+{3m|)e>}826{U>{=!H~T|_8Qr%Iz@$ECo{^g zJAaE_{nz+;*yQ1_*Ck(qd}Z<_ z$(JKvihLP?nO6YSlGcCn<;jim=PQ!yUw+L(twO#Q`Ksh=kgrC*x++vJ(a0*TX^=|) z$=4a`MD#yb`cJ+A`9|bJ=l@)71SWS=@^i^IBR`mYbMhU@w; zd|RDfe+}~O$wyuR$af;&i+pEt5&V1?a(M-4zE}C~lD-G|$l+f+dz0@g#y&C*dfSiu zK=S>`Mf}aDQ1?S_Zh`Vc$WJ6cl>Auo!^oA|lOHZTN7SP{9z}k1W6R?)#xMG>W^_FH z2^ydtPa;3Pek4Dc{1oz2>ns&jp3@qe{0#E5$<_Iv{H!KwLgyIcJn{#~&nF*4egXN_ z*SU-)H=K3m|`x+$MjB{4w%} zP4p4+M;p8Dnf!6`r|L)YC&-^ve%)t_yhGj|AO)k}0?5@CK<<(UVtC}fLh9U*JRNnVh@Kwj1W@*erK`N!m6 zkbgq{8M)GbXH0Qa&_%b{#DbVIKMI7enzi?|9d2=v;L)6fc!s-87Rh~n2cgviis%3qnLnV{6Q_nP)yi7 zQcO&tm0$ek{9jB?F%88O6jM=5Nr5gWtD%}H^c4`rv=q~6a^;`CK~l^}F}omVqL`WD ze-yJ&DDhW-rsrZd{is@+gJNEaIVt9rEPek^A(#Ieuk@c{{-LY|DMZPOg(w!LSdwB9 zip41wrC4mZmLx9G)D?Rvilv8mmZeykVmXTC2U!#=P^?H{^uPHg6su6INwF%$8WgKh ztUe$an%7zsO7rr;Y6dO|PNU;&c))X64Y(cRJ#by+nDq3A} z^8tx)ivAbsMyRPsu?@wx6x&O5J5y!o{9o)uu@A-06uVLELNRjxQ-djXr`VHXk3kiR zy(sq9{JMvFF8fia?O*_tatBZxOK~8@krW3}945|#DGs4HbQnw_;$Ix0()Fi#lz?Rm zP-~_2U!2Fucs#`k6eo#&qREo;zwYW(ikm4;qqvgdbczco&Y(D3@UjII`u>OF9E$VA zKk{FJQRw?0iVG<&qqvCT5(;(xSAW#XTsr7h9xta*F9oI(wFOXIO`+7D;u?x;DXtp; zB;^JP-AHj$lVx&mp-|FIaVy0bin}OoqY%w6Zf_VU?i{30jHOV&{8AYGSN6RIc|XPD z6c125O7S3tl6{JYOjOSQdd(keoC0`)qD}E6MTQLAMvl>5zL*b6b_>}e1 z1(fw)+mPZriY~>w6cNR%6fs3bkx&%ElTu_9xt>(BjA|AoMQ=b$(WiKx;%SO!DYW=Y zKcfHob9sT{CEG(8m*V`2;u|r(ZlV-&_}86(PdOdM4;1ypf28;lEm7N8pVmvUl?|0pM*9EWl|%5hctV4chH zHFG&3<>>qWauP}?C#9T%ax%)v2U#X%N@Gk#ISr*2|Jq48tp+Q5ddgWTXHXvXI3wju zV$4jb-UZY|25VT#T~Ik2WoQF~!?)7rfSgO1UN~mHtzz?W5tLT#j-LaV}4}0_DnLuPCG51t?dc zTunTy4$WnC)5DsS8&j@Dxh|y^e@e9%)Bwu$C^w{BpK^o7GZ-m1G7Ost`KFYc8PDdF zTQs)e*^2U5%B?B)q}+y59rY=&u)^kJEakS-REAE zhfwZKxgX^|l>1W35)FNVl>1X2M0o(EzWFy5 zl-ES)E`47EuDF06Z6kELo{MUfhV^8Zpz47RcKjfc~ z9`q&>%*6C26=RYHKyNa7Q_wS8fZ`GHmvs>2RP?46V;UK!r8ixZ+w@Ft26~Irn~~mp z^k$+r2fdl;iQ4yOp(n2ZBW$zL6a8;Ko!*?nITyWo=*_KZRS)wjTe9fQPj6v?EkI8; zf}YwSO!Y-1w5W`WDZkEIg5I*?T$0{WVu=3tM)Y5t%h6k2j1}rpj1>*@%Jiq9w+dA~ zyH)8uL2osBN7GxK-gflXptm8tHR-J@S!>Z-TMQBZk@nUT=lU{kV3;?ex0!f0mT?n$ zo7RSjZccA&dRs_nOL|-B&_H2&+em0zgWsOs0rYmDw5209cB-TFwEolEmEP`> zrM3VG?V)MaYVSp_nfu=K_8Ic;D=GWY+h05Nr*77IGIC>}1J6^I*pr=p%HC{X?(>s&iDfCXGXRd(M)J~@-m;dsq z8Sq(>qTUFk+`05FrFR~^i|8r+r*{Fp3mdS(T&xTgx}@=leHp#W>FL8iy({TmrL%Nb z*U-C<-nH~@qjw#>8|htdc#Qt{ZlZUKv~hF8Oz&2DV@6lMo!(va?w~hv_?HI8(z{2D zy9agY-8;yocR#%c=sisDK~wi3Q{@qQkI{Ry@i!^-9yie^>3vJ@DS9Qn7QKXCo1RCn zQv>K(^c*qNyFi^wPhJ7U7Qas~pcl~#>2(LaDX>b9O;#$8nT)w|s%T-F>Ct&`_r57pcQ zC)K<|<>seah-v}lQL|H9fRtXCYEi01hLA)0UoAm(Kh=^{2U9IYwFTAERBKT!L$!kN z$nH=rC$`!GgmXoz)u~pZs%2lj4m2%MtxC0;e$+k7i$k@ha_Zc*sWzrshiZMQbsIm` zdM3I7)kahsHjhnIDsEESR7(G;Hls3^Kbmt(s@dihR*-h zDO9I67=t{W>I`F_+00kg^K7cisLr9fkm_72k^SmCgOtO+UYv`lE}@e9fAL8ArDo|a zHz`+8T}fs1U-x+p)flR4YYf$OR5yunJ=G0VH#UieM~OexEmXHQ9^=1_>TU_$PIU*B z)_R#nkRQDN%2dF-#dXTE3dWg!UdYDS-Jk=vIsx5%(F@t}CswJK$ zWqhh0>kw6&%BJd2jr#XLf^kf)N0m|eR54XR)ujrXkTB@OzadPh(#94NrTUAo$1yH><6n%s0O@n-k z>TO-IVN>9Dsotadkm`LZb@(5u@{xX2uurH&d#g{WKBM}!4pDth^##>eVt?6yslKNA zX1EH~cT~SneNXih)elrk`3F^MgGz4!RKHUFLG>GzKKT!jRDU*{RDaX2b^9Os<50=D zsQOnLkn?}DCjD{gi{SUiQ=$I&4G;YZ>6`nXW+nUT@K1kI`p}<@{uJ~l*Ui_B_2vAp zky9xW1=jjce_Hx4(Vvd~`Sho!zb^e5=r2QmM*54;7zdM*TVH&n3+26+l9B)7Ss<-(cpWF9-hq{DNG-_!pwTh@`0Z0_9Z9iyEHA1-yie zOVVG;WSJj-6?j?tD+ypZ8I}IimwlnXVr>gyeg0pA{wfk$RmRomuimifQDv=3e=Yj! zNQ%A!G7Rg{KZySN^mn7b0sU?0Z%BW0`Ww;Tl>Wx_mG~O!jL zt%su9(%*spc8!Pr_J(0c`n%BIiT=(F&rrJF0_g8fe?R(r(BFstp7i%Jxg+{t=hAN$ zLAC%@UFkpl17uX`zMb|o&{+aYo6Ti9+5@X~ofc{zZ&!&Ga{d1ZW0f_i(h70IF zO#edqchbLz{&n;(7R)8|ub_V^eI@(!FVpGzbGefK)#BH?0R3y|EAdy&Ys~cmxPkty z^lzkpGkvuwG#L7~4B2Do-!5Qt3#2NVfB)IPi~fBQ9ZO$r5Mtj$U-VyUiRXS9AE5uB z!8~L-d4#@A|55r+(SJ-}vMKbR5L=1=V9n{b=(i0+hrTt4(s$^m^j-Q9eUE-1>H7YM zerU4HTY#E{I{(v8OeY!rzIbx_1^u4brAm}_qhB>P{io?aPyZSE&($IR9~b8UEzQ+@ z{n+`%wr$(C&3|m$wr$(Cd1u<3>0xX;d6TcJ`kcA*d~4lRtIn=nb*g*j*>$?_O-3BU zQ6?k4CI$i;B%)US^NFdIQj;+96C)`jpD>a!QZSM$Uq%2U%_>Fx79)K|+KhA==~O)^ z-W&M3{D_f{hq69pQ%Cd#vb zfKqt|TVy6`t5Tbp+Tzq^p*AnIS*guMZ8mDN+X{0~lPMr6)m^I1twrWBpcI^s+QQW4 zr?wz983#k5g>2R$)KvCs`Uo&uZ3$|6&aW-0WtURBbX9@cveZ_hwj4Fld}^ZqWkG5( z8f<0N|C;E(jjl#*?b4^Vy4p3=uBmpd(rSfubh$3I4XCZB$odj8(G4p{IU7^Eh}tI9 z4yCp!wLPhAMr}uGn^W6{+7{Hdv{_qG+j@|wHMgaC1n6Hx!gd0BXlo6{wv+?PO{vYFDcNX0KDIolfmkYNu7Z+aAu4 zM00P?qIMp&v$fzkYE}P7@6Y)PUO?@_K@n;fQ+t@&CDd-Fb}6;%s9i?wYHF8LyOP=! zRdKP>=T+5`nv4Ky*Ge7J;q}yRQt$?~Hx9PY?NMsaQhSWr6B?BfQ1YogNlniD)Sj~G z&q&BbpVN@)zi?i#oR<`Tnc8dAUa9!hUbWHJHTp({>n?8*mLK2Sc;z?q9h~y>dY5|n zp}a?ZZffsS`<&Vb)M9EMQgbzZgj&s3u2WO-H(hy3@YRa`Qwym@)$X>3gj$bUO07jL zQ%+8;sg8^Q?W(981>53FsgByNt<$&oN7O#1_Nhic5m4^lXO*Mi7t|-B_9eAHsC`B4 zM`~YF`%XjOQ2TbkR79o#wI3>w+E3JeRYcDJ)PAw}Z@T>I@Dz-D04FED*jau^(hpb zlKM2%r=o6@zp6%kTIyE$tM7k(2I{j@pHZ`BqCN}tnT2es%}RZ?YIobi9LkgtKz*)? zrv5zCH=#Z+^<}BgM}2YX^HX1#y68Xk1=ZTazv+At>MH(1kXc~2SVGB5QeTR?&Vstp ze@j@7`Wn=ir@kun6_mUp^_A6G$#g3!b&)OXV2J6FZk-&O5yf{eDe2lYJ_-%G9NzujUV>PJ!Em->Mk+E1M{r{ei-#5sO$TG!xa6u(W9xKM*SG-CzJ^FW2qlU{rDZ#Gp;8>!zy{U+)+k6Gh|Psz9Dx|x9@-IcTvBG`rT4Qd($oCZ-LagpZZhOAE5q-E+14Y`cM7g(v~#pkLvO< z>Q7RCoca^PyW2WXQ&+*S%Lt&Zj{uVUJoT3qd4c+i)L$CTrTz-_*Qvis{k3YZfu;V2 zt^5}Cg8JLk9qR9BsZ#$(sF(WxA@%pEe=x`z6sIowPrWW7a}_T2P(hEn=)d|h0?I7v z5%pA&n0iuyy3D9Ilwf}aAZ432t3~}A>TT*DDOvTu-lg87-XAohp^vG5PW=<=G6l5Y zX9EKDQvbhF+Lu*Sefe8Zb-tzkJN56V|3v+J>PGps$d47D`p?vL3e?Si|D}mC0+jX# z^}ngh`CpfR*~u-U&IUNE z*2^a7%HM8KxiA{Y>KlH&L(9PXJfxlcm&n`QPps;G{S*6tqHw6XPVNzGmTMIHLAAIZmTu>b`}7EkO*kgF6dO7w2D`9?thT zeVi|FKEnAF=VQ$>fBd8VXH_oF=T!wQ_$AI)IN#!Yjbq>cSN+SyerNak0p}MS5r3SY z)XL#seuVZb&R;mc;rwoqKXCpuyO?hO#`(uq(~rjB|KWl=7Vf0DW8+SMI}Yx6Qq~=} zs#aRu@lCEfA@0Pu6AeNdoupdgivHtHK8WH@fja~4l(^GqXezZ++iKI|n)5%d=)cAF z{O``B);%kA8{^6p7)~sG+|6;f z#NA>L!re+Z)#vVRgDa8Z0;9i1zg)T3}y$tvAF|%|KxL4uY!~bYM*J{>v zxYy&#Q^3$(H{rg5do%6>xVPZmgL^CPow&DY%I&y!49JowjonouxOZ1|aPPJFeYi3d zDn9OmxKAqoA>4;?AH#hF_tD{MxR2wC@()1Vr*NOgeH!;U+-Gn_{3Tjli(1?la9_fG zaZK>#ii!IwZVmS}-1l)`$9)_34cxbI-yGgZe7Tl)aNos!Z#aZ2;*a~G+L6(afHDGb zopNhj7uUn}$800Sn;JL5{T4UI6_LkH)TU}PwdVYf+r<48x4`YPN$GD^7uUVhreu?|J`dG`wgxh{;PXv@bB=(#r+=lFWet+f5rU~ z_h-GXpX|PR_%}WLhWm#WH&Z~Ff7)IC#{C!fA6)xMnO*+F8(Xrxu_~te=C=TNsTo`W=lV06PZ!x?j@I?PB9B)ZeP%d_9yyfwh!CS5b@s>3qZ2)ftyp^=N zwmII`c%uJ!TdLj4Y$3=tHbwQ{+skK};HJV!cqfm^JQeRMywmV5#5*1DT)Z>z&c-_v@2oMI zG6-z_^YAXfJAZ&w4&Ft0m*ZWGcWH^>T~hJYzs%;!P*CJbapXc|1mInRcfC5-;$3GF zB`PBT??xdT{>^yLG#~FVJoCptTJ}l2XYiiFdwRfE{8_x`#zbDg`vC7nyjSq_@b4M% z*RrqTy@mH0-WzzY4-)a-6yNmrHr{)9@8G>_Zj0i&-TM`S_aUB-H-hKj>G|K&^MA#Z z{$1V9v-|)r!wd0ZtrJ;1!AmRO?w;cncnv)L<4;>qtC>dtybk_McwPK)@OpSZc96l-oMKH2XE*!<^6|mlpkLPL6wd_F8-AGjK9n9zWBT0-;KXJ{!vQU1AkBa z{ng(Ke{cMK)F0e`)qh|0-(27U_=n;jsI-Id40Mrt^#OugAXx|4RHz@h>kq_?OwrM*qvL@vp+a2LEbl!{lCzf1Rmm zI=KP=R{R_B<;_3-O}5T00~-Eq_;=tN@h@@wJMr%t5H#@~{4enD#joMthyOhO{rFGd zKY;(RraXxM&`>9j;6H}{=$J*!2*7_*Q=Y%90FMq15)>5xkKK>i{Zz=MoMcy8&_AdSh8hsC6#oydFIscb@{1KZ~$1m_5{7CsO zzK0*EZ=M41!-}klF@6I-!OxUqrU1Tu`LCZ5zL^5}E&Px1+xR`@%ToZp{r#^mzXHJj zNa~voMf~wU#Wyei@jtIZ%KVaG0{pM=e^lDnYQMq%7XN#E^YTZTKa?R`^C$d&@PEet z6aN?d-|>IN|IL&&H{=glnjUmO_SVSu3Zg53#r8z4&9 zqe>*$i{J=?y$KE?D7O&7C)h_h``XI;6R7M52UJ-WKUm3!5FAEusD!i`0y6?MdL+R~ z1V<4ZPjEEBu?ikjRnT3Iv(;4mW%m}OxQpN(g1b$_@(JE6rOf@j zpWs1dK41}f1R!{r;E_R!B99R~Pw+UwGXzf%Jf+~1HtT6|s%w-jo+VKIH@mz*@Cw0; z1TR_s%TnBYyIv)Dy~GJ#v(YyQjPhILZGslTI|M$#y99ND_Xs{DcwZA`9N20j;!Cxf z>0f+@Ko9?cS4GPZK|qiagq9x>!~|o${||H!1UW%dYc}jI#h{MjZGsNL$Le?0_6Yg} zD*oD!?)VA8=LDZtxde6!1YZz*MewEIdQX%r`mfHngc}fiN4O-x_k^WX{y^|IfsTpb zCxTxIezxRatn(YeAEi(5yG8ya_^a}(T?qamoQU9mgyRtWOE?z6e}+&dhI;<5dI-lQ zoPcmV!tqUqRjcJ~3@0?z!ifndC!B37(IkK0t{zb!g&a% zBUE`0rzf0&aHf(^D6_zBG_!SPC7g?JHo`dwXBWaKXHLtRdw>(pOSmxMe1r=U%K4vg zfuR)9|7uCN2;pLciw>ftL%6uwB`jwt!nFvOCR~+J^*>yea0TVa2q0YEGFK#ASrHil zdUI6&%~h-ThpQ`L4YhjsAH9~f3D;3v^j{qr0fg(zQf~EzgnJQgM7RZ^jsS^nLb$2r zZ$`LzMb^YE30367t#rAy+HJJdw)Vb>{uAy%xEtY)gu4*#M7VPmEkl;JYvmK}uKYa+ z_cT#+b$csbmQqO%_aWR@k^Kk{B;23SDt}c|F6SUy{1C#U2u1%14gywbxkXngay8*K zHhQh?|9ZlkHF|?unF5422~BRrErgE}-b#2c;cbL>YV>wO{S|-~SL80jy9w{9vTWu1 z2vzyR`w1T~A=BGKgbx#1{Wp6(M))$}VgbBo?4EU)(+!cPg`CCmxmBXkH=|HBUm<;+j` zp{-matdH57OBfM)gaM&n)|VesTt|SU$Aog`Crqj+q3FN$8>K_oBjpSkmyjNgS70yME2#+Xjg|3srYL_q9cip zCpwDg7)?34s!4P#kxT(un))Xw;Y6a7#>7t{x|Zlvq6>*mBRZGpbfU9}&Jdd1x-(6m z;-9U^Iku+gKhgPWRsTo(yol&xqAQ6mA-bICQliUB+Mpjzxx&^_@sF-1y2fynNpv02 zBShB|-9vN((XB)`66q|6jQ*Duh;FH}h;AdgljwG$F@FC`bQjUx)n0bTdx;(*x{v4q zqWdM??5KbIGkO&dTl`U?=ZPL8dWPt6qNj+SAbQf&G`Ua9(%kK5%S58*29FzCVNNy_g?Mh_DTrqwo|1UlGDIv>fOu-P z(^O>Q>4@dO`68aa+Lw4nCCo%@lz-3<@vIt}jd*tAIn_760wA8NDyZN*#48fdOT0Mo ze8h_o&riG%@dCsP4rsdR!m>2|FRHnV$#&JviI*T=hImP0mHl`r(}{^LOT4_MELT;~ zg7QS5&Pv2<5wA?Vx^h+_UX^$?Q^9cL{IBFSE1Y<3C9fm6+$((qkejnUN!k1c#4hoM z#3vGOM7%xm#>87Ha}%{X0^-exHz&65e@wSqDPe21+YoPCI=Z!pzukQY;zNmdB;K2N zC*s|dyfg7G#Jd`rskS@uUc`G4Tm831v}W1)LB#tI?@zoh@qT0G9zc9xwc`LMK3MlM zQ-Js|;$w*qCq9b!2n`)+$mY%*O?=D%A=VKfckFm#(SLhI<@x^};**K5BtC`sT;fxS z&mgvc{29w5fcAVQ@j1k25ug44^;Qyy&m+Es_YyO;>%<=rzd`(VNg#fc*oc40A%2JWJ>qu< zxeC5tEr~zWlo8@OaZSK#U#TO1|D#cl_*Y_|xJMii7sR3B5pjb!CeDZx;&hO!TjZll zsn#4UiADd3+r)DIC+^I?lJUzFlF_FCk_iS~kxWD~G0Eg4qW>h5lE_=2YRA$cLGdXBsjfPi ziex5|sY#|IQSp~VnG2RMy{61SBKmK^nMvj*nT2F_l36V{n|0-Rz>>&}C{swbwu$B`fMh$8T}ZYk*-;5Q zSmsV7J6B|5RyZpeg&?Tpa=C zPOA7PM*KDXFri5uc?2Lif<%A$YxqZ#oI`R9$!R3VlANfV<4BGtvEpx-Cy|^&a&lEo zE<|p^sj?L3bds|)_Y7T{^FPVi6+uJil3YP@9?8Wd=aU%mC%KU1q5)0QFCn?KbTsQS zlFKW<;*eZPas$a#B-fH$O>)hcxz~|gKPGY`$;~A8@UIPPB zl7d79KWUM)g>Nd1>OV=Jyvh2$p^`{u{o=U+*F8pik^GNz zV%_CmlK)7@BOQx$98%T)s%AQ_6s)>R$0wbTRK;JTlABIs?tD54=~SeXl0rI}h9<8P z#R^kK0O^z!NIJE}Wdx8;YwJu;IydPIq_dOGNIDDYOiCEz5rA}7(%GsCa>vp+l%o#< z>FD`i!FfpMC0&SgKGFpgnZMdg{RNFLMHVJqgmlpXqJ+gscPCwfbR*IwNmnIZigX3i zrAe0~U50eok~W$mb*%oUE0V5Ex{?qqhjf*SOu8EBI;5+U%9)>Zjfz9M7U|lf1?A?f zOS%E+dZa4;<;^#rjuC%N-aH>;RsWzsE3wL@20Z5M`J(~2Gs)FtII1L?7dJ^dgq$dv26(7}q z(o;z(sQMhcBSC?l}~!1l4S&tUR#>DB6ARobd1shI+#*OA^vdOhjQ%DI8`M$((izN6owTQqvB?csLP zdr0pfRoPGPwD{d7QLf@%O}UTs{=vSAJV^Qq=|iMXkv>fN80jMwf%H*Z=W)^}EcoP5 z&8JD9Cw)fiJWKjq#j#m0kiJCvq5;j#eA(7{mGn*0*X;6j(l-W7(zi(8BYm6n-Le|# zJ7!Z;Sq&E8ik>lFd&x z7uh_@oZEIdFWG#CS$!_q0%Qx5El9S|m=zWw8&m(Y#mQD6TY_w9vL&_bQj%is&oX4o zku6(oR9Z44{>ogDOiun}_O}2+5d9}x)%LbJ*%oALkgcP*&Vp<$G93Y?+jYq{CR>ke zL$dYBHmG*D6*e+U*=Q58&2&f6f58PbPXT0Gl5MZZR%Ba~ZL9t^LX(!Zs~iP)AQQDG z(`SKfC%e}!WTO0JyPEo@!#&8(A={JeShBsy4kp{1Y(KK9@;+oT7X~S0`;*DBpX`7k z@Sw^kJA~{=vO~!ZCmYiLOnwnu)ge2I>=-hA`ENmO>^QPB$c`sFmFxtvlgUmbJIN%P zD?LSu7+=LdJAHs?ku%9u{N+l|w#;+MZYDdA>~ga6$u1$gfb1f&3oAlZfoy05WS5d% zR^ep>WLJ<~OLisM)nqFEriW{!J##0oBfF98da@f#+3M<~6Y~f_b_?0vWt8kzvfIe+ zQ2+LdPj)AnOaXJrvhO`)_mipqXZH<4WDk%%ME2kiBIo~VN%kmtc^e-iFaPO1PUet3 zLG~iqlO=)dDYZ|leTM9LvS-PjGn<<0dZ8+%oR`QxAbXkYEwWb>d6n#Sb?o1NW^a(a zIcQr$Z>xQW?A_8SLuBufyD#LFSV+$pW&JEF_DS zZ$nFl=R-d3fIx1hfYK%;pNM?oK~%|;l24`1 zWaN{RtL*2Lh^9qh1gfP5ZuQGW7ys|uARUx0jJ#TV4F3k{;=i;yo$zL?qFbiM@n z^5jdBFQZv90?3!HvdEXU&T`gSfqXUc70Fj2Ux|F>F{`aw(Zouf)os?AhJ^_ke^8Y zA^Az<_mH1Vej)iO{{e~09X2C?{9$r=&qMwQd8z-8 z4fmkTC&-^97x9;n`B0uAf1UhU@|Vb;BY%O{k6&`e}nuT zav1^SZ;`(}<}UA&zfb<2Wa++2`@rUokpDtnBkz;f$zyVd+$VRH<_XRAOdgPj#;xo+V=A;xr+bj#r{D46ZwylsMkXN^N{~5jZ(LNBmak7{`)WTKgdhj z|5FN%7Wv!e{*T7EGKI!;gMDetQ28`wqA@Ft znQ54lziCYPvsum@H0Gl*Ck;9C)3EyAn1{x^1HOjlr?H^!wSdi4@vrV@V-Xt5&{&kl z63SVO#^M!CmrK$R&8M-{m^DTJX^8mKSf0iTCaU+GhI#)(V`UnvlpLkW2%xc=ET!Q! zXzW5`O&XiiSc}HSG}flEK8Loiaa1_bcZUc{!TP>1ZcO4?5cJ*wY#g`!}hip{~bwV zZ@zwj#{bd(lEyx?8Z`E$c?XUCXih|9e;QBFIDp2rG!CS3291Mg97E&asa`*h#vwG0 zQ0Gt@hpBUTY31jQ$!Hv@$WdyKu0ZvVRa>T?MB{k%Pf&YeY31jQ$#i)#jZMa2<{7Y22#*4K!}7qBL%zakGNA2x7|KM&n@`x6`;=LwBgX zQ|(<9jmAAR9#G_78u!t-zsj{09@Nl76I)CrH&{a|Q)xw49k}&aB8RL!8-YE=hBCn)7RD4w`e)oJak+ z)XrUzY0j(5`KqP*3#eU?<{~r~Qh(v0=%O?iS8y@g&k_OVnOU z^D>KEPE+*XW*Pmbc{R;zEazI9*Jn3-Z)3KjffI*RFsIHLa)GYui4{}i*TolWp+UKDdssPY$cYDo3J zF#4~^ycDAU6!TLoP-Ru=6bn(TL$NT$$`p%GEJv}ZG8dy*QXQQI#S(U}r6`tBd})g; zE2T!8Sze%<2w9h63ySq9Hl`5$r`SNE z;%rEO{=Klds2w_+h+cc;!uixC`9Th_NCa5V*dd_yE>5KV2XnT98El= z@+l509g4%%9x+5XiqEpg&Y=+5r#RQl3-QmFlh6fy!ds`_83{uj3kXz)`1pQpHs z;$e!rDefzA3LOE(z18lD+)wdX?K-k^BBT59OcA^&ZP_bA>`{9VCK z5AQ4T0mX+EGIU)vin>M}3ZKHI@C-+DH562Qiip-E6fwmQ6bVJ2BBf|5NA$tQ3O80Ne>3EN zNAbPnn!SFc_?O}*ia#iRrua>Z|3abqZ$3dI{u=sI?OzoCQ2bpLQRIK(o0|X88kd%c zKdrIVjx!o9~#4-Ltv=-6m!WCjGEJjQ9zoq)$TEg;|5=U;7)&JJAv<{=S9Ic&cEl+Dh zS}V|6lh%r~R#oOoYFDPUN|mcUtXBE7R;RVb5U%>)TAS8-nzatCbtP))6WIK98q$8m$ww)QPlCp>-0ilLrNrbLtTP zbXw=oI)j$Ve(TI?Urj&T_HeE)&!cs|sZ)u6>q1)B(z=M&m9#FVbs4Qos>-x3wYisD zL`Q&0yo%P<7QeppevwfOzw7|w&V-lg>rt>wQ{2 ztq*9)X`hx%0a_y!pH`igOUp6oTA7wNSkek;$@#zhp%vN6i7r#MBL3=#{%ZqGy5%QQ z&?*0ow`iB2b({7Av^um)dF;~qomP+5*R=YyKBe`Mri=coBO^fTe5T9KX?>~A7ZtAl zSCvoe8(Kfo`c{_G;divYr}abCr|tG94gE~(S6aVRiHiI-{VJDin>91-Icd+Lv{`A-PJ6a0q{tjY z{#>-@r9HPGQgfavM0-Aq%x{qeY41&YA=;bKUYPdUv=^bhJncnkFGYJX+Dp(D@vr!$ zr7aUduVQK1%PO+WP;@yPU4izhv{$6PGHnrmdtF2N-(HROnzUD^y+#!^R(6pQP<}eJ z*P*>J?R9C3+S6W7?fN#lp)NO)rQvU)i0Hrk$lczY_71eSpuG)k6@RI-6>X#c%2Dwb zd^=6wzUqYbjz?nC=f+WXQzPzn2~ z-JiCMl8Q`Q#lNlM-#%mrKaBQK%0Ha;5fx7R$f0|6H0@(7eylih)yLC5pY{o~&!BxG z?NhYENwiO{2)aC#_UY=JHUKsEOxowrmO-FVtN(4$e?`s{M|Qb@_NBBhRPZ9&m#A}b z6|Fj?eVKw*|J$nnl6w`M^55FkwBM(F4edv1UrYNo+Se)ndfGS9zClXK&A(9`$+}sW zx6r<|LhLTL(|(Zl9klPIeJAa^m3EimNQHYUrsDU}zMu93V^(-bmco2k?ITr`_G7eP zr2RPUXJ|j6p(klStVMm#?GNRKv=e1Uv}3uD zN(|d6?VPsJf4#28P*y>^t643z?`Z!@`+M3y(f&aQQu#;eR=y8E>++Wh*B*YO{U`0; zE%Og?gsJ-9{<~V*=>JNG_P@0MqcfIiwKJsuopI?bOlLegGte2I&Qx?Jpffq03F(O7 z)0v2l=zo=~$fRl~t3Wy`{v8#6;hXcna;8>04V`J#nU2o%gF4c4XGS{n(3y$O97>p( z&Mb6hqcdx{lpo>DUO7sbv%=}jrJ=d2YINq+=zMe*RA+v*3kbRTbUF)JXAwG^&{>qu za>vlJbp|8$n1v!tY$eV5iEBK~xitw8mcr?VcN73i!^XGJ=z&{>Jj$^(Knwkn;~ z3}PBsgU;G?)}*7#UxEf-ht9f{Kd3-weL5S^5!t7+;UG$9;~~zbbT*^26`jom6y_Fm zwj3gCO=kx>+t5+X?`&Iz=xkr{Z38=Mu8e>Zp|cB}@~g5do!jW_M(12QyVE(E&K`93 zr=$Ac*^7=G`04De_Wx||zPc3gx5xo>MC$42T<9D`=in-&;GuMmpmUh|hYxUF9;x=I zp=&>e&are(p;J~nL8HeHMNg!25*;i4=H8x4=PWv>(K$o;rw{SZED^olvo&;1wN(E+ zIycZcpU%~EE}(NcoeSw)Lgymk$hBNNROeDUmsNNL(z$}pm6myxIHs9vH1}Gy*U`DY z;%E;l{!;lSI->u|xrL670MqB~bYePp(0Pr{opc_ja~GZal&Q0za}S++CD&|sKb=SD zJU~ZepU#6rp@%K!Q4KvNp-OE!PtbXR&XaVW(a=+LWDr=s>VM}sI!6C3{vw^1>B!-~ zBGXa*?+odG=XE+C(0PN-+jQQnm~`H<72YWkIywkC@6ma`s$;8tNXMr$LPrFjPEBpy z=DND{ggn}6KqssaI`;hEN$7k-C#CZdos3S0PEM!L^ah>gpaLBcf5qG4$iE963Z0&U z{VJ-s4uZ}nbUxS6r)od5y?sIFD>`2aUq2U(er==Q()o?fcXWPI{Cl-B0_gl$TCK18 z-}yzsUn@}k-|75KN5r4bpMr}cBS5qMvB>`vm-D~i-LdHIO?Pa%OVJ&N?u>NDrCZ|T z(Vd9y_(JYZU~;E#0XVoMwnWog&lIouOh{ z{!Db|r#my|8!@QT+_J>2nFr?pYGhcoQLjwbVdK=r@G12KY{K7bQh$% zINgQlE<$(V0fFwKbQc>eZ5vCJ2;C*^a%s9-(Orh_I&_z%yDHt~=&ne2c}W!J3YNJN zU8DbWR~aoUoYm;APIpb^uTh2Qu0?lkLo=nUx0x*Mvqf#q*x$Wm|ThqeMEtG4Gu_?k?qd17Ds#6gs{S5y zMgP^`OB`w7|L7h=cOSZkDZVe={pcQ~{{CtYpnIT@4PW%1t`3Fnp%tje;o?i^2)ZKv z>K~={Xj#f$$I`u+Zpk@a@#E>9K=)+2CkjDwPa5j>6uPI<9pm@EbkCrB0o^m{o~!(` z=$=jY9Ft`}i}N&eepRyy(Y;W?iv*NTE}?rZ-An0SN%t}hU0(6&UQuxryo&DC>WKIc z;n&fflkWR;@1pw*-Mi^NsQi2A z-dj5A-$%DhvFCr&^Fwr>p!={A9-;e~Ix+(6H9kJ%KdI5D)Y|v|-Dl~(M)x_oFVU3| zK=%bn5$DCB{$Hm1ih`>D=B~a@_iY8=Q2Qp`w@SxuE&8wcyL8{H{4zxM1G?pFnGfl@ zbVrmR;;&9!tz#>AbW^%M-AM63ZCF}Mi0LMSrA9NgIo*cf%A{M+?a^&j2;DYabN;8> zwWa!WKc)MT<$O%{lc5Tq(fyL{=QgTO0dg&0l?dIhhnU~eo0{%-^v0$8J>7rl{y_J4 zxZ*I= z(VLi_=)ZQz)Y2pf^+yZzg)8 z{|Zj8b_TUG3MlnwrYA>zdb6mVmEMs4_pJW+=G5q1HftVw3o0TbfZlv+=T~cf3ruez zT`pW&brw;(sJU0Y#pzu@ZwY$a(p!?=8uXT;w>-V2Eq@t$%WBGU6{6j)KyMWVS5&)_ zS~CUIUzOf!rK9B4t+OV*E$FR9Z$o-((_4?;I!a!*B8Zi%SYPc1w!@9+ZK}w|YB#BH z^*5s@VNfbu(ut(!|82LZy$O)(A$&Vj`Vh;w-dcxl)tmBBjP_) zc6WMv3@ugsWtY7*>;I|{y?yB&tjK=!_NR9sy#t1_4ibN~)kEm1{!1O19p%>aj-Yn} zy(7ydy`$(IOHajLmd99*77^rli=0UB9C|0wJDuLi^iHLBiiAe@I?XcApm!F%Gsldc zJ;cj>!C_y4`? z=-s0D^=eiBdpD|o6TO>DM}FjP+^S%y|97i%yV^VG-AV7Rieo#xM?<3j^zM_8sqg^( z@@w`Wy;5WzqW22Dhv_{>?-6=WDp~ZOp3Z`v=s&$DZ0=LKd|K@@YM+&mR@UY7YG0uD zqB<|BeYv#qG$Ey4rI*rsjb4r3>-65CC*rT6H|f1a@9nC80p)t%rS}27_muE{#k8e9 zRB%MV@;ywiPS01wq35dONyvQ919~yNQ1M9c(U2Jd^fG!~dO5v9X$^YK0Zow>y|y|= z|Fy#&y|3u?>3u@a>VMDv{ZH>xdSB4{jNa$wx=cS`4l2_V{ipYhAmV&mh3I`xe-3&- z&>xH5kM#b~=uh;1R_7Obzp3-9y~f|GM6psw^}qKQy}#-GOYa|g|1*Tq@8o|bw?8(0 z=#N8x0{Y{c3jOht>1r>~mdH|Kw4u4KNb{Z(|i>L5#(qW|>QpueWza+zycXC3;t(O;MT(e&4&zZd=W z>2E=Q15MeGzAArzBl;WD-=xa2xtl3x^8rYIOZq#}--`aW8roXzHuieAqrZb9+gB;{ zcdQ%*cc#CaI=iUd)n@Ik%RT7tSvmshhoa!#^vl2h7h$Kr5B+`VA3%RU`uh(v=^rRd zbKwWmKaBn%6+-_|iyuz^Ncu+%n59GiC>uS7{-yMfrGGO0>Wg%|5>8NiB7J-EH(!`j z=$}jfRQhKq;WYa4$Y8JNO!}hv^v@c)7V{K9|2+B^(LY}a7x4ecI16CMjb;mn@y{3D zFf;RplMOR7Gc#3~nVFfH88*y}8wN|ZC0mwl$pVL;x<}*d)T>f;^_)K41C~$AzTT}| zI7lqWR4$gG*?w>ame9I81yraW+sf?rY9+gk2yiesLDjx_z(pCS{y3v> z?Ds#Gh9fNiM>;~0h%-CRyozWqaOPBhE}Xg55&bXUHO_qEORly6X91iAb-0k==9O|5 z!C4JwQJm2lS`24#oTb%Y0%u8KN`gj^8JuNtmdCOBU%UsM6%4cB;H+q~R>E0X z(^s*`s&?MhaW=qN!{Te=jKNt~$!p=PjkAt~iba;|Tu(#m8-4-eY>1;G?`))@jn!^~ zv+01N$mTd(sI#Tot#GzBHErc>ac;!f4(Ax0?Q!DX0AXkNSJt`upM>gtMRIO4j~3(gJXXp8uVLagJ2*5S&AC4p-mmzjH(} zluLGfl<{$_{yWFwsFFL!;g~6o$2k?}1e}v_PBe*y#W@-0lya!2s^DojL;CNWiE{b%xdi6|oQpJi;n10s-~Z!Ws-eqpE;m{BG_J(C7UwFBUaeM| z!cc|laIRNe^}l@eZ^C&W=VqKIaBjhQ5a(8$dvR{Vxl75n-+2LN zNco+YOc9({aNfchiz9-MBP{^uH5+|H96{{&|IXVMc?aiRoc9dV&h-IK73V{oaX260 ze1@aq?|fpjJ}voD^K+apaK6U*66dP{UX;R7{V&)5EzWN^-{Jg-^S!O3EkKw*;rxR0 z^B^7P*MVO+I29bnX1OMWQ^SdI>NrgtPidn6I1NKkKfo!ZzNLPl|LrnVuBt0TNr?=O z)5G}-C&Bq0C&kHeGQ+Wl)3?qan)v4+it{&)_5$ahvYI=diQ>v1mxb?6i2D%kM7W3J zPK>)2?j*R&;7*D=8}4Md)8bB!YsgdJPB~KFoeFnqTn301w7>s!r^B5YcY53zac3BC za7W?(KmB)S!JT!8Gdu1=xO3pni#sRo+_-ZMMOFXxcEz0!cLAMue!C;lf9o%dy9Dkc zxQpQ~I;f!h#SKUOC2^O+m5xw?#XaCIi@PfBa=0S(xXY_u0e7^}%Gp;^Q1#zk#ej;) z^FQwDxNG8;`d?JW9V47FcWvA)ao53>r+VCVao5A$5VzES+zkvGciTatW^J!_2g~0HcUMJrR=bNmJr#d^`SEC2x9-_{nxTW%&T-+mYFT~Xb;U0y160V3p z?lHK>;~tA!_{Ry^RMRPxa00ICf4RbwanHg%1^0B^QfoM@dmipN zhJ&juKwhcyEpmZnUWBWX?p}<0iH%;0dl~K(xY`2BHC$<;`iftTdkgM0xFYqq*Q&iv z?e+GYZ`9#Ug;nQfi{FZS5AJQaqWQSDG*H_q)N2g@gNpl$Gd@YVGsC`wOl}J+8C> z+~063g(H__srU1bpfhNQeBYhqEr{MSqoELWWdp^ z#i%ZBqe~1zRF|TPl2Urn)lK!e52z?o?N$x+&Gw zsBS=Yb*gJoU8BgNx~AGOLlxGhx}JjTP+eE>;wnB_R7?FYrlz`~5;jsR`cGAwgmtoUA3_olj^`uk9oMqruyQ$3LC0Ru!i2id6VfAvtRM^M!kAe%beM3t#6 zpj!U^lj<>4Poa7&)e|&&oZ2Gg_(6&yC#pS(>d6C~>Zw%ErFt6Gv#6e~gfpm~IUv|0 zI$J~90?HfdJVnl@s^VXsz(rIaqx!^Q@xbxwNx*oDuPe-a;jGpjxDRrqIxye zYf7*zew_@3f4y4i3wpw$|5R_Ls;XYSh3c(TZ>M^j5X{HY>K#KjzwEF1yLGkKfp`x<(Os)#?;_ez5JA1Lyn z+K&V;*ZB#xWvG5iZEC8YQEgNGoa%2>zo0sf>X*v@O6}KFzcE=h_gktzQ~i$W4^*W! z*p>W9^(W(7ky|xwXUE;RrH@~m1=E3C=#i9R2x+N0Z6q;wWXo*_dl8#8Uoc0 zwc_2^rTPceh-#|Qm}-w|Qm&`mbw;(X(cI?#E>0Q!lj=Vj{fnx!1G|fV4TqZj6=-b& zYLii$P{_53s7<2I#3qH>q{a~|gvqH*LG6FkO8u9O)TW|Fxi<4U)~2DhAhl_!%}PyL z0JZ6<&7{r@)MlhMYM8J1%xY&Ttk#^3+FaCTS8xusbDEG?DL6N^d8o}#ZC+|B{`%G^ z-ypRG44K+O)E1|wJ+RZk4t2n~H%_4W` z@J?#?Qqwk3yIYY`|IKvN?xS|U;txn-IoCtfUZnOgwP&b3LQT6s?NOyk3!wJ+&}yGl zVNGO0VO(C?W;1B{k~4^8)|P*drxuc0@U83 z_O=kje@AWk|Np4}KD7_1eNOE|YM&?~Er8m`L#r)Xz-I+0S9xE3p`0(NeML=w{BNVw z#!<_teM`-u_8qlfsEPhl`+?d|>ijrV`Das;n(DvMep8Nq1dtuM)SA?))I7y&)asHl zvJ#(KV}MW#sCB8esI{qu16tuw>)6Fd)Ow1<7D=e3BV?I3r#^vl`qX}>_Aj+RsQpFl z&jF3v-_-sY49ik=(SPdp`=9!R)F+cV^@*rYtj;9VCpBc7GPx8H&J@&#^uIn8^*yLV zeO2mHQ=g0aG}LER=CstOqdpV$>8a01eFmvubWdge>Q?KfmQHNPS`I3z=NaT7wWHxP~xHXI^vOnnmtH>JM0I-3nex3IHsMSW-L zTT|a&Ioqh+R_%5}{2i!^{wu!I(0+HJF5*vpH?_MPPEnltp41C`FX~59-<$d&)c2u& z0QG&9xu0QDmlj|bbD)L}QhTrk54Ft06hEB$5eBh@qZB`y`Z1PytRlzBP*!q0^>eA8 zKwWjdej@dgsGq8wlc}F#vXpt6@u?5#e_cKWP(O>hh(Gmngj2qD=TX0$`uWr^rhb9V zy-;Zv85(tc{;ywZqnDXnhL=1*B6d}<%~Ddn1K3CcxO|; z8E+x#w@`Pe-%9;0>bFsUfcov4dk6J8x|jNWGL-232B-cY^=GL+ zMEx=958LP?%6Zf#K2H59MV_E8;xCt+v*LdD3UBur;zcN1cuc?1y{c$$>9rd3JpSrey`VZ>=sP-rGj-dXF4n_Z|i}OS?R`VGTZf9UzYE-iq1n|h~kY|V&zpL$F^rQTCQ zGKlIhQ=41<@6`WNba<2E{ZB*M z9Xx3PcvIkw=)WRU;UT#aof>Z%ylKmwmeWm-H!t1{cyr>-h&Kz~C?(H?SAO#&>BXJq z&5AcWUa9|z%wa04KbL0Bt#+OPu0v@7c=O{epw5DWDBi+&>*Fngw=$lz0KCQURN=kF zb+`nc=s%vc1G$PW<1M4evUsEMmQ#OuycHy>n=%$}MZA>+R2**=yfI2%RqbkOSI1jJ z2r|W*;*`g-7M?Z*Zyg(57f;2%thNE(j(8j5ZH>2)rf-a=n(u9bx2eq<(tmFYye%zm zzyI;J(cEn6j+Z*L9lg10N)9_sI=c6TAm$?U1ay<}J-``{gn zw=doScvku8pJ9@GYNf31vnFW!U7xergoAMb&}+I2pJ_b8s#fA0~C zKPDU@KW@l)PvX6fr|rOd8c(0|y=U;Awan)%^98)IcrW6;jQ5g>7G?2ypQnS!h0X@ZM=8!-Z2DI2k$*`^uY}8gTlwtE+F^e$9N+6c%R^XDzx&o z_*{I!zc7jFf2H>Mia#D+ zh9@GAm*e%-`5mwP<-Z~0X*=-##vA(Ok7s}X>5q>;8U6(L6XUD?`>OwgiTp{VtZzRB zh(9_06!`yBTw6e~M}I1rPP6c*#$OtL8vI%Dr^TO9nbWDA9)E@*<|yOi&xAiSzCQdH z8#H_LXTzT#e|G%2@Js#2x4-}N=fMPWYSQi?HKw zj=u%|*7#Qc{jG))%in)0b33)$ucHhiddN{KJQ%3Lc4n6#mhLKM3I;i+?8m zarmbw$DHu-_$T0>gn#0IjIa8y>r|$+0Q}SNPZy5(+5+TtISc<%{Il`T$Cu}S{BzZw zXPCw8_!r<`j4$G^A<=)kk+KEgUxt4p{^j`B;$MM(l`^liw5##UU;dk1{Ogo(J-&*+ zS*pw>`j3CJ+FS5%9c*8b+ws4{zXSgr{5$cV!M_XtK77%C{Cf(k&b{JDwfpfO!+!w( zVf+X2A1bSr(MRyhCx6R-9REqJ@Pu9YQ}|E+H|tsavG~v7zlbkQK__~_I->vhFXO*b zW|eo#tN3r>zlQ&Y@?SSm{5MUaX1zV+zl;AF{(JZz;lHm@5r1_)9MNt6V?{nut1Y1D z3;yT$Un}y3+Ar}%{Oye2C^$|KS?agqNY?lG9sD2g>-az7|BC;U5`MPKU&N79{SDv6 zuUOm}T2EC|v;{~_4?n>76;%C~8Konb6#SNkLj1OXW&JMx@AwgZA@#8mME~)V0Y`@! zey)z_zuny*`2Q%V-NFA${l9JWUl}&W6TUe1n~=tYG&iR)5skBGOiW`{8k5kNo5rLx zrlK*Kk|$R?h1&A@pN3U~1~g`(F*S|pX-rdals2u}>CEiv&p<<(g8HMxDbBMoGmY74 zNDH7btJ>L2NPVmSjX7z|C3u-N4~@lW%&VOFXo%F)n4iW1>Wn=9>u_Nji>R|`VawBK zEKXxN8Y2EQmZY(?I@$tcRm%udLd%vfR%3Y@D=H!_fX3*N*S)b4jg>8b6>+4(YBctt zu{w?7Y}cT%j%KZ?b_@*_f2p&!UC+8SMCxg*r*?g{85*onptGQ>G#(}~S@F%)8p^t4$iIxnRWvTAafO}h%0W~sTutMe0Yc+C z8V}RBp2i(CZlH0Ca*D5jZlY2C^2d;A+)CrNp~TxQekY9wXxv5PUK)4PQ1LGgr#zqg zXxwl7q1*>)JS4-B19^nTqck2b5E_peoW>J0o>Jt=A!gYHXgo{fI~vc?c#p>OG+w3g z0*zN_yr?NJ(RjI>w_M3sDWWsdc#Vb#K8@GazG3mVXuPAyPzz|hYoqVe_>9H}G(J|& zhiX5vI~DO)#Oi2}ic_d@<7*n@Xo&t>M8&^c=l3)`8b8qZjmD1!fyPfX zMDuBA3n*#7O0L|)6&h6nMtx}L(}-y_XtZfGX|$A6e*Z%w955B{(CE^L zN>C?NyhkIUkeR7Hj*H<^(iE{5AJ)8voE7kH)_Sk@YvnAMy+R zpOofACBHc_%}K-`%-+-%(43s+6f~zSadRNesR|}dXii6SYV}3`X-+E@vuvn)czpT+aeD7ooYJ z67>0B7PD|MG-YWns-eYbE>3fa|IW1(%{6H*O>;EOWt6ro&E;t>H%M1-1zT!GnxghJ zSE5^Jwc%pv`6?o0Dvn)?+Yn)}l{kfuEU+Y=c12te}? zTVGp1^DxUfg645FOZ}&Ll$JW0<}oyn9jv5qXv$J)9#2yQpXLc_%fABC)OOH3r2yp; z{%JHXqfdFf_s|^qpP!4lGF`0Br?_9eA1t9_-gy6abIenRs#n(xzmou=qKP0@dvZ>lZ-6);V0 z1kHC9e6O%W^*^8~;;*5PXnt&bt^X;_uV{Xzq0cSn3mvNd%gKLD^Cz0$(ELvEaWqHt zUy<)={y=l&FTYy(XPUp!)JD)O#b3#l!m8t#71FE{6mPv6K_NkPnt##sXvWI%X*OuK zXf|z@)&FKlvqN*}`M=qv84Y%Ai}z?IG;^&cEr4bwrDR`yntv!_|NU3{V=Aef0@MuJf#r<`}@p$fB#FDop&0Kpsta}&&|poqVnYaW96 z6r9&0(jW|hU_pX42^Jz)j$mPe#R>HJKTz=x789EJf+bjjU}=ISwbW8&g)*cqAXwJc zU!Gu9f)xl>A{edw6@@=g>0o7oRmuu-Vyh`f8$mFn|G^l7^$FH8OoFuu)=}oV1nUi| z6%N4$if>3Df={p!!N!tRp4+Abn=8KAAd6rNLm=3Sph(%8U^fDJ_$Sy_?REq^6Kqeg zqYkb92SfTF>>@=ZrPP0d-3bmQ*n{9ef;|cL(db@k%N9VeFTwrtoY+<$L^E!Ni;AH|4e;vMLqUwwO6O1(o!D|HX6TD9FHo+SL zO7u;Fw~TMLPoOOzc$eV6`X78i@FBrx1RoK6qPf}vWOtuRg^|}tS^$CQzpnEu0*~Np z0*Bxmf?o*65&TH-Ey4H7l#ZaxAB>~mPvT3RpAASL`cLqi+KK_i3g{A4)v2ki8(eGp z1R+7gAOuZIc1E?M)Xp?=0V zp*0V!4QS0vYXw^K(NcMDNeiI00IdbpS%}ucWqtDwYAs4jrM@LCfY#!)mXOLu@LNmK zT2Aq$X)QymRDL1I-j_Fy5=PTnlh%r~R@LE3v{sg=)Lf}?qzXl2a4=#r`Vs? z5ws4VrE1?gP^0BX09uF8I*it#CS5~^i?6fj@JL$H4%9!|;IxjVbv>=)Xq`i=Si`9r zJ)YJH>YPYRWxr+r7YJGBDK_^s<(#he3|gZ3w9d4vJ=@R}JeSs0w9cb-kq*ySD<1)9 zU1<3i)4H72B??|j>$1Wzp~BJ<@z>Cm2B)PhKq_3L__egIGa((`Kk7nIV>pohg^4r7*X+1*gA(Kn%VN;XV zqZWD0B2N?!ttV+cLrcV8hob+wI~9K+JZF&?2ydkIBH<#mUZT~e^)jt-v|ge0F|Dz* z-lp}c7I}@ztU3immPgi>jzpt)B2ItPlNiJ^2=aI>o;1}Vo0k( z%TdRbXgOnzR+Cnpmaiet;;R4Uix|)fHQF*Ov78R!%(S|+{-qVs`jb{nO9j8x(`6)f zfn6YJ{sBzn~GWNw^8& z7{Uz**CJH?57#DKXNV*EPpIOrJ0jdrk&O(8aAR?#+NOlt5pG7fr4qCwg!cEJ;Z}qq z`-EE$R!F$*kiR{lh(F;UShkr2paJgvTo32*M)?k0w<8FJI7OB&FQ-afBxj zn&Ulw2tQHNPa>2qP;N&~=~TiC2~Q(Dm+*8#RsQe{C7(H95}vKdIYY>Kim3jF`YE9J z<}JL4P*k1pV!}%ZFDJZ|&_4g${Sw;00)$r)UaS182}S(vxm~B=^@KN+PYdP=B)o~R zO?Wfm$Aq^KzCw5_;e&*?5#C97yHt?b%isSH-bHwyB6kzsLwK(cie;4NCM|$aT7$s} zA0m8~@L|Fy2p=JQjIh-IB8BkrA?A~WqWOf{0wns3DWc$WgfFV|yxJFrLh}4i__AHY zSi<)dd6n=r!Z!(D7qW2VZ^7!kMfeWk+XgQVgz(*guY~srKTt>XU!9L^?k9vl5`Ief z72#(#`Z=LCf>8B;Rzm*i(-S;-P{0Kn!6Jd?;XTl1h=s%%6|Eu$x znO%Kt0im=2!m1FYTAi?|h)1Z6AZ(bBf`RzLZ>bIKUOKcVC+rgbNf;4kgt2Azl$j7p zJCLh9x}31Dq2JYxv;e}tXiucz--Q3r9$)=`X^&Spa+wP42?TFXID|~B$RxBU6;Ps+ zS@IOL=b$|$?U`x+kM^{*r&0p6rxtRt_qH?w%b!l8)6Hrlh71R2grdqKtLqCGe5`Dly&D^h;{qyGGA7m!f7yM<_r{?lGW?V=JYXIz}l z=Cqff{VeSzX`e-VDcbAOUYho*w3ku-vb0xJXF1x-tFr>_(Nd(SUrw=-3}uRy)vjWq zv{$qE>a^FOy%y~?Ei%UDu5A%*0mYr)UXS)JwAZJ-E$t0xZ$ex2zqn{`q;_MQyD9Ch zXm3V)3&l6LxU>Vg{@%3rqrDI9eT%3ppg3EZcYoRk42GI`5bYyqA58mD+S&rj3Ww3whkrdx zNs*l%Nqb2D+sDv8nf9@?PoRCA5(>`o<&0&@i87Sj^7)_kDYQ?geX4?|m1H5P__tO3 zixfHYvuWQ>`yASr(>|B>MYKiyHBt4yeF5zY4PsY#u|_YUeW_)Zp8{xKLHkuBGs$n~^uQ0GS4Hwn4ejyVch>MgWy6;S-!hVVOR-%0xc+IQLL-L&ta zeIIRY0j7>*Ned_vX+KE&3EB_Qew6mZTJRAQQePkbh5z`_EKh3aDcVoderAAcwdd$e zO#6A-9_<%se@6R7+Hcc-iMGf)?U!l4Li<(PV+XS+{@S1p?Kfz@DN*6SW#5(W(Edn~ zcWJ*z`vcnV8;(h&tt~)y^s&-DQTyqDL;G{uKhpj}@h@qAOZzL@-_ZVAI3s5}&KA^m z(EgtG4<(_zqkf|8(*BwDZ(8aX+NJ&%iL@&UI{&R%rCn3JKEP@FwA-{r|7mMeXa^FN zVT*P+#O%=S)9%tvXh%x0`rnr4e??0Dr=8KxhjM?XGal_fX#Y+7Pi4x(zah|;hkx4t zjv$@!1?fznc0xK6l_z6n=}bar4LXz3nUl_BbY`G4IUSYy&J>z5B^_ChT*Ya0pffEU zZ2?ktI*Zbo zht7g@=B1;W-T4y0T3)5MotW&ObF%2y)DKgg*;>a$RqO%g6rRl6dXBj%n zX>?f|75yL7p);C}v<8FFQStArLT5EP`usn*(>kkLj_5y~F>2SMvoW2u>8wXb#a}|} znu2uJr?VlQ4P;oZO~hZWLa#cT6b_wD)owO~Z$alLI$P4Yna);pj-<0So!ynT4V`W2 z?5zHFbhf9nqxw5Yy6jyVfnDb=;>#4fs@=_m=FiBsUpo5;p{%pt zkbeN3gOq=uiK>6FnMM6W)gDGiTY$`XgkjP-iq1(IJ(|uj>Ksewcy*4WQ%>Ptm!Z&Led0pmRT+JL%j*=Po+-`~Pz9_tLqqT)BD9={!K^Auax(sjU9P zc9utV_!ylh=sYf9amhU<;&1(@3y01#be^a4tikC#XIK70$&{VGMCUanzf9*9%N$GR zRq@LeN`p|&8+6{J^A4T2=)6536f`>e{9p3lr}Gt^59oYKN5r4bN4CPpbUqm*()moI zpQ{!9SLe&}G$c`40G)5>jHC0t`roSk&aUl;VyMWE;>b#Vrdw#>FLeH<^DCVuo!{uF z$agAqME~iyHmho~6s*(nEbh~3h+n=U0iBFai%yqLsN}ZVj^SHcL?@<`Xs9P4S&!mRz))A^U~By`7>CQlR7P>PEB3Yx<&ZKtc za-H2-ZFDxevukJ$LCm>z=c2m|-MQ)NXMyfKbmvvhd}`+xrc^Fl0NsV?E>2gT{}o?E z?V@xSGl-pZ3B{MByOhD{E-j9n#8?O`CG|(EUC|U#e`UI>6pmcx z*6prFcXbV|p;q*ND7qHiwH04S?Ye5$6M|Nty8-dTbT=eAnC?b&zoxq}-5cp{LiY^1 zo6;@t&FJn>psx?2s^*@o_RiVuDN)7{?AvLoGH=&Jt99_{mgSHxel zcC*{rgYN!x_oTaz;(O8E+i)ylU&Z$musneS=&JZj<%0}P_Yk_pP{qG{7~P}k9!~d2 z%{{^<9wlV`G@RcfN<>>G#x>wV^ zj_x%&ymk=M;q_{7Fd*HV=)OYtX1ez&ev8^$>E1^7Zo0SAy_4=8hOD8x%+?A^_a4Dz zYvr$i=-yBFS-KCDuB?Fe0I0dz(G>Hbt$t@8_ApYE@89lE~>DA9^txl6aENY(P|bUhQbNJ9xtx-E6e z-~Xsze*dF>M{SpGR591hJVdh)so+Pm63u2pN}GddE_LR#{JF&$S>C)vs{hga zL*Rl$TM#WovtUBfI zKh~7JzM4J$;M^p&@`Wn^e z|G_&h+DO5T4PX6Di8fPb^TOKKYfGZ-72Hbg)@rvQ+EyKD1aiqbcOcq>Xh+3&A`-zT z+L>sV0Y{PDh;|pGydU-?+F$X#i1sGhmq^;d5Me*dJiy>Y2NE4LL^y=Fcr6Yk`kd%6 zqQ{92C%T;I2%}TO<-4W73Ii3(y&fjwcfRw=S7|*{OA%p?`6W#We{CK zbSu%7L^l#$MI?exbT!d6hG3XP*AZP$bi-gSTk0m|-%KRpZ&HYEBf5v^b`9M@bQjT` zgQ$XcTjsq)4-wr*^nl{`OWERiEPBuo6nvQIQKCl#DK3es{+F-s6GX2PJxTPOlAj`a z+AxWpQRG<}mgMJ&ULbl|acKcWFAYUsQDm$^h+ZRln@IFuacKcWZxX#_2s(U+=wqUH zi9R5DPm%YBqN4vq(ohUY^ob&$sul6K3;TlTZ=x@WDnwrq{Y3P&ati(bj%b`PrPQ~E zum1N$KM?&Wp<;LC2DLRrzbN5XwW|MR)FEms=n_?l0-_p`PgE!J$~sz&s6o^$kup~s zK@=RE}o=-d#@zjc7iV#mj zT>kRMa;7Jqg?I+yQOcar;xiGKPyQB}m3VgI*`$=NpLh;&%=3Rd7x5y*a}zH}JP+~w z#Pbr*XL1dVc!8nZg^W+Uu&GcCiM0j9+5+OT1rRSud^qt^#2XPWO}qy2GD=>ScopL1 zh*uMZ5AFryps|i77T-`E7|B1&Cucyvh#A_3;OT3ODj98&* z3y6!402>Z);*E)SCEkR1OX5uh7pAs=cysmb-+$w+h__Q@YvOIx*|xB96?aIyJ@HNo z?m#U1Z*WC+Cf;RexEt~Q#JdyAqdxH-YWF1GYlyRtg8Qo7Pw;Y<0~9%s_z-oZ1rQ%> zU(G{xcvxXAas=^}#77dJOMDdZ>BL79pGL;=6=a=tF#uID*_ud>`=x#P=ISSMnh7LxyRmdxYMj#E;S|-b9ZP2gHvPe@XlV z@oU6S62CzFloouN_&H(`e;qz6PPyji#h2Md{5AR#@yoveBQ3MgQe03rY(ht`Iu|oVcoBjo4SGPV7lk zwM&tP+Oi7}x9H7A9MYSHxJ|E^y+iybahEtHj);58kL{$1R4W&d5&uq{6ZcC{apg-d zFq0DhMf^AMzr_EH8)l$^wuzrf@A2dM{h0l*A`ru z>(Ej?dff8>u*DE zTYB3KrqGq|V52)4oZim#_M*27z1<6h-mdg^lhEKE?(IQuPm?9@m)_p=_M<2IuYCLa z&))v@4pig-36-y={rA5;Z3n$W=^aP!FnUMRJDlE;%0EK*5dn& ztn&nmpG5BtdMDGnklrcu&Y^cIy))>YW|^mpQ`SFIbI($H_Rw7C(o_BKoo}-)Fj@32 zqIV;`i|JiO?-F{KYwo4=E;CG9`3ibhniM5mP47B&u2Cy3pkUIwUL0Bf$fp2$H_=o5 z@7+T0HjUnD`6B+-zmwkm8oi62wuat4I=olyeTF7h>OY|NL3-K(1bJAIN9=+hBRP`Z z<0QqK=m~l)dQZ~(h~885o>%76YM)Un`cLn|)CeQ5a~)BBm;C-lbA`;^{S^gg5a z1-_*B@>ZMETCC`GAYT7B$JU$ zO)@#j|461VQIhiczZjBCMWXsYQfC^HX-TFhna-3_+6+VfD3UozW+D;6Cz+XK7KxVg z&PFo(;QUF-zXFrYMKTY`+(XQHHGMvlsQv;Zn~*F>vIfaQB+HR3OtKWoA|#8GEUKKv zhWM)giR!RX8Nt1q$^}b|BeBksV2PBH4MM^P07*hIS*_-7LT^V^5NON%qp{ z-fC6!>D zIRn0O&MS8<)h-~pP{E6YQ@$LRkX%V}sp6&nlW0ds?C(F5tAsBVu2y>uiHg4#A-SI9 zA(9(N?j*U99BoBNBP|7trje zob)r2Ur0VD`GMpMl5a`AB>9@;tHCTJ-;j(O%vhw8d}pF0-Kj7oa9%M z2FY(EE=k2k9aD{@O5%~!Na_ZWEc4`(lwE+NNfH)Ol0a=sm?fu8(vhJeBoTisOA?b8 z2ht-e-unsZJtQe<@ixy$7a++=i}m+O3swJ} zO}Y^2(xeNMF0O<{)GkV@`frXsRsBy@|E0)MQlzZB45{cp>2hk9C$-=FmxL8bMd3-M z3y^AeNLL|Um2|ZNkvb)F4blxr*Cbt+bPVa*q-&J~-52RPgCXg9T5WxsyCLbOq#G%? zG3h1-FRjeGnT9qu6-c)vJ&klL(nCnMCf%EK8`7Ogw^iD9q&t#sPr8HQ4=icCccyQ4Q4MK(tSt|Al+AJvY!1&_cy+wk?LoG^dOBMEFsA{l=L{# z!$^-JRsBzoP{NUhAXcg!O?r&=k2N9E0zZlLcqNGblb&cecE*zxJVouP5|SBDC%uXE z4AM(U&m=vURNFy%w#g+u$EKf0dZFf?PpS|9T0xPENG~S6#MCsF^fJV!nLH=k={Uh{Q%V58}00>|LHBHcaYv{a!I8HkltR(MS7>j?;;ibmrM3| zFKLDJKGN4o?mZ`lfOE9V_j(SNyQ zNAHtF4TvO8VIl{sn3I%OBFOhVXAle^&lDwcnC{NBSe__oP1z zXvIcIf0ALjhF_HYt3gPA6Gu1>S)oxb>7S%kQq}gfMp`Frka{-VehQG|ZITA0t-%TF z9^0gaymv@rov2G1nOq(A2EGnc(u}mPer`gfzmxtkLX&g*i>$DJlTAkY57~sI|B{VQ zHeNZkdEK)K$_m*;WFq@y`VpY0kg52a6UZjlkchuJQ;H*;smMl=K{hSf)Eb(`a5Op{ z*$iaU4S`g$F~jMah;T6a6P!oJ_=DIjaA9AR1a)?J{J`k}YRAmbn7i+GL~2RwG+c zX)BSfLMGyG_qFQ4SHkLKYmkj0Tl2qo*#gK^{AEe&lC4L!fo56#&o-2-a-AEKFG#it z*~ylT z$<81nlWS5X#I+)kacsbb>Ls?gmT~Btk z&C(u`T}yVIAmt)&AiJ6D#sVR`X(;y=vfCBBl}yB6t}^8gGS&ZbcsE(`hL zJw}j&GWY3U2PbT`W1)sBv zd4cRDvKI&S$zCRVMTW)l$`!s!_7>S|WUpJ~4YD^&jxxzq{Ihq+RQyMB-zWQ->;tlI z$UY?doa`gAPsu(e`@~eUHC6x1YG06jrR)51Fbmn&mN|~>JF;(wLf@19sQe#>Ky3k{ za=(!IWWSPC$$leqlv)1%M}4WKO#dLB7e-TMi!s`!iKFOk1N{xbQi;mdb7a)I2?c0Tw=j!}jexH~8J^BZc zzfZrAg%8L>@(;`3DvSP;e>Jp*Z^*~l=(ptG ziC<>@K<+F5NAjP@9rB;ae^ulcp~>2QBd-inibQgkyr!J0ty3rW{>y17p{X{IkgTfw z6hPjlKP7pG{2%fzd7nHYPn8ps_sElS{rb*QJR=wJw=;_Vlm9{f7x|xpYl!^sAFJxJ2aXPeor^0R5@ePE%O9 zgfkueQ3`4c=+8iZ#xiOoqCb;HXI48)sT=*-=x;)QcKR#RpM(CQ^yj3%0R6e>&r4sw z{E_KI|8r(+;467;wf6h} z{(AI9@aeBle}e&&{zl>pzOe!6Z%Tg``kT?;p8n?ax2C^^o!tx8o0a|i zl08^tH`?m^pY->nt)Bm-yN`6Alf@etAKL2;w0xE*G0O_(vbkDO{7fAOe>0T(^%Ne~$x?`k!iF7aK zaBOMysw!Mc(0=~Y9Vgu@r8}PB6^1F@36^}7bg!50)zVejm+mzNr+=N2tC}}R_ePUj zBGSECy7!TDi*#?5?%mS8O}cjwx!q(*_fF~FRaL8sRQfO7du`eKrTdU{Cz{IA)fOP# z2W^FirTdt4AF)xk0G<7Di>Ur{Jx@vZZ|OcQ-S?&YjC5a-u8O~OpObDW_|MaS!I0^{ zq`nefwkvs6x^GHX#h>`=((Tj#?pxA*SGp?xjJ~5zwW;@{JIUZ&$p_N?LAoDG_Y3KM zB;8M?`?1aXq%TYLU%H>$B40}PTj_o!-Tz7V>j4@$-&oFf9BM-`1nE-$yFW>{6#SnJ zF5O=&|2OIW!Ia-MRQ8(gpVIxy_-gee|B<*Y-N_OM(*0MunRL5Mq5gLh=~Dd5omQL8 zB`yWOr|G)>qQYZGV%2SsyC7w&-eI%Y+;?*UdN8;rqo>$^w63-{`A`;Kf+yx|FNMil`r*A#l0yyuY5-%a~ zVq{YPD||^M=*rmw^kjx}Nd1qOp}(whs!c7gzVcU)ctwdgbxO|FP=7 z#3N0V_*N2A;bXRdcpHhgHBpJTv$;D+yomHcr-buNKE~YssCE-bjvwI;`1dwQ(~%p ze3r!86ik%4`mX>mq>h@#Ft8Zt;Cl}JVD~iB_1#F zxIwb6;R?I*DU*hW|zER@q3Ep6$oa-iuZy|WIt#hkJt5dyQ;=3hg zBZ%)bSrS)WK;nBWa<9bNK1`y-6D5A6^d){kVv4`|4@vy6Da&~umH0`CAF~x6C;y3x zp!}yK)`x%M�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

    ?C8FZ5U^UB8z$k`}29BX~tP(W$ICaXO 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
    $f8m$pSLD~^H{`eEcS_AjV!4U!{-87? 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'smtp', function () { return $mail; }); $register->set('geodb', function () { - return new Reader(__DIR__ . '/assets/dbip/dbip-country-lite-2022-06.mmdb'); + return new Reader(__DIR__ . '/assets/dbip/dbip-country-lite-2023-01.mmdb'); }); $register->set('db', function () { // This is usually for our workers or CLI commands scope From c9f4b7ca23a6bec131e7488e5b9584ba2e4e1733 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Fri, 27 Jan 2023 16:46:38 +1300 Subject: [PATCH 63/94] Delete project domains and certificates --- app/workers/deletes.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/workers/deletes.php b/app/workers/deletes.php index e840f86097..d866e088b9 100644 --- a/app/workers/deletes.php +++ b/app/workers/deletes.php @@ -255,6 +255,17 @@ class DeletesV1 extends Worker { $projectId = $document->getId(); + // Delete project domains and certificates + $dbForConsole = $this->getConsoleDB(); + + $domains = $dbForConsole->find('domains', [ + Query::equal('projectInternalId', [$document->getInternalId()]) + ]); + + foreach ($domains as $domain) { + $this->deleteCertificates($domain); + } + // Delete project tables $dbForProject = $this->getProjectDB($projectId, $document); From 35ba33cb49f6a2d43a73b3e141167f5611dd0034 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Fri, 27 Jan 2023 13:02:17 +0000 Subject: [PATCH 64/94] chore: review comments --- docs/tutorials/add-storage-adapter.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorials/add-storage-adapter.md b/docs/tutorials/add-storage-adapter.md index 786c4a9ba6..b48005ad1f 100644 --- a/docs/tutorials/add-storage-adapter.md +++ b/docs/tutorials/add-storage-adapter.md @@ -46,7 +46,7 @@ In this phase we will add support to the new storage adapter in Appwrite. Upgrade the utopia-php/storage dependency in `composer.json` file. ### Introduce new environment variables -Introduce new environment variables if the adaptor requires new configuration information or to pass in credentials. The storage environment variables are prefixed as `_APP_STORAGE_DEVICE`. Please read [Adding Environment Variables]() guidelines in order to properly introduce new environment variables. +Introduce new environment variables if the adapter requires new configuration information or to pass in credentials. The storage environment variables are prefixed as `_APP_STORAGE_DEVICE`. Please read [Adding Environment Variables](https://github.com/appwrite/appwrite/blob/master/docs/tutorials/add-environment-variable.md) guidelines in order to properly introduce new environment variables. ### Implement the device case In `app/controllers/shared/api.php` inside init function, there are `switch/case` statements for each supported storage device. Implement the instantiation of your device type for your device case. The device cases are the device constants listed in the `uptopa-php/storage/Storage` class. From e1dd5295f42e467095aee822b7710a3d7d1c414b Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Fri, 27 Jan 2023 18:36:20 +0530 Subject: [PATCH 65/94] Update CONTRIBUTING.md --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0372313d7a..beaa176249 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -441,8 +441,8 @@ composer lint From time to time, our team will add tutorials that will help contributors find their way in the Appwrite source code. Below is a list of currently available tutorials: - [Adding Support for a New OAuth2 Provider](./docs/tutorials/add-oauth2-provider.md) -- [Appwrite Environment Variables](./docs/tutorials/environment-variables.md) -- [Running in Production](./docs/tutorials/running-in-production.md) +- [Appwrite Environment Variables](./docs/tutorials/add-environment-variable.md) +- [Running in Production](https://appwrite.io/docs/production) - [Adding Storage Adapter](./docs/tutorials/add-storage-adapter.md) ## Other Ways to Help @@ -471,4 +471,4 @@ Submitting documentation updates, enhancements, designs, or bug fixes, as well a ### Helping Someone -Consider searching for Appwrite on Discord, GitHub, or StackOverflow to help someone who needs help. You can also help by teaching others how to contribute to Appwrite's repo! \ No newline at end of file +Consider searching for Appwrite on Discord, GitHub, or StackOverflow to help someone who needs help. You can also help by teaching others how to contribute to Appwrite's repo! From abeb4973e4226e99ced71aeeadd1222f62308156 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Thu, 2 Feb 2023 18:00:12 +0100 Subject: [PATCH 66/94] fix(readme): tests badge --- README-CN.md | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README-CN.md b/README-CN.md index 0fba96afb2..57e066c8fa 100644 --- a/README-CN.md +++ b/README-CN.md @@ -12,7 +12,7 @@ [![Hacktoberfest](https://img.shields.io/static/v1?label=hacktoberfest&message=friendly&color=191120&style=flat-square)](https://hacktoberfest.appwrite.io) [![Discord](https://img.shields.io/discord/564160730845151244?label=discord&style=flat-square)](https://appwrite.io/discord?r=Github) -[![Build Status](https://img.shields.io/github/workflow/status/appwrite/appwrite/Tests?label=tests&style=flat-square)](https://github.com/appwrite/appwrite/actions) +[![Build Status](![Build Status](https://img.shields.io/github/actions/workflow/status/appwrite/appwrite/tests.yml?branch=master&label=tests&style=flat-square)](https://github.com/appwrite/appwrite/actions) [![Twitter Account](https://img.shields.io/twitter/follow/appwrite?color=00acee&label=twitter&style=flat-square)](https://twitter.com/appwrite) diff --git a/README.md b/README.md index fab785f0ae..43808cac4a 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ [![Hacktoberfest](https://img.shields.io/static/v1?label=hacktoberfest&message=ready&color=191120&style=flat-square)](https://hacktoberfest.appwrite.io) [![Discord](https://img.shields.io/discord/564160730845151244?label=discord&style=flat-square)](https://appwrite.io/discord?r=Github) -[![Build Status](https://img.shields.io/github/workflow/status/appwrite/appwrite/Tests?label=tests&style=flat-square)](https://github.com/appwrite/appwrite/actions) +[![Build Status](https://img.shields.io/github/actions/workflow/status/appwrite/appwrite/tests.yml?branch=master&label=tests&style=flat-square)](https://github.com/appwrite/appwrite/actions) [![Twitter Account](https://img.shields.io/twitter/follow/appwrite?color=00acee&label=twitter&style=flat-square)](https://twitter.com/appwrite) From 213d3dc721b7c442287ce850c2d9bc6a3bcc215f Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Thu, 2 Feb 2023 18:02:12 +0100 Subject: [PATCH 67/94] fix(readme): readme-cn --- README-CN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-CN.md b/README-CN.md index 57e066c8fa..7c9fb1c39c 100644 --- a/README-CN.md +++ b/README-CN.md @@ -12,7 +12,7 @@ [![Hacktoberfest](https://img.shields.io/static/v1?label=hacktoberfest&message=friendly&color=191120&style=flat-square)](https://hacktoberfest.appwrite.io) [![Discord](https://img.shields.io/discord/564160730845151244?label=discord&style=flat-square)](https://appwrite.io/discord?r=Github) -[![Build Status](![Build Status](https://img.shields.io/github/actions/workflow/status/appwrite/appwrite/tests.yml?branch=master&label=tests&style=flat-square)](https://github.com/appwrite/appwrite/actions) +[![Build Status](https://img.shields.io/github/actions/workflow/status/appwrite/appwrite/tests.yml?branch=master&label=tests&style=flat-square)](https://github.com/appwrite/appwrite/actions) [![Twitter Account](https://img.shields.io/twitter/follow/appwrite?color=00acee&label=twitter&style=flat-square)](https://twitter.com/appwrite) From e2a58dfadefc4a25dad175409e3e25acd4208007 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 7 Feb 2023 15:00:23 +1300 Subject: [PATCH 68/94] Fix validating origin for apple platforms (cherry picked from commit 702472a8c77717619d477801a52d6038daa30da1) --- src/Appwrite/Network/Validator/Origin.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Appwrite/Network/Validator/Origin.php b/src/Appwrite/Network/Validator/Origin.php index 9ee30a26ad..4c92a77771 100644 --- a/src/Appwrite/Network/Validator/Origin.php +++ b/src/Appwrite/Network/Validator/Origin.php @@ -25,8 +25,10 @@ class Origin extends Validator public const SCHEME_TYPE_HTTP = 'http'; public const SCHEME_TYPE_HTTPS = 'https'; public const SCHEME_TYPE_IOS = 'appwrite-ios'; - public const SCHEME_TYPE_ANDROID = 'appwrite-android'; public const SCHEME_TYPE_MACOS = 'appwrite-macos'; + public const SCHEME_TYPE_WATCHOS = 'appwrite-watchos'; + public const SCHEME_TYPE_TVOS = 'appwrite-tvos'; + public const SCHEME_TYPE_ANDROID = 'appwrite-android'; public const SCHEME_TYPE_WINDOWS = 'appwrite-windows'; public const SCHEME_TYPE_LINUX = 'appwrite-linux'; @@ -37,8 +39,10 @@ class Origin extends Validator self::SCHEME_TYPE_HTTP => 'Web', self::SCHEME_TYPE_HTTPS => 'Web', self::SCHEME_TYPE_IOS => 'iOS', - self::SCHEME_TYPE_ANDROID => 'Android', self::SCHEME_TYPE_MACOS => 'macOS', + self::SCHEME_TYPE_WATCHOS => 'watchOS', + self::SCHEME_TYPE_TVOS => 'tvOS', + self::SCHEME_TYPE_ANDROID => 'Android', self::SCHEME_TYPE_WINDOWS => 'Windows', self::SCHEME_TYPE_LINUX => 'Linux', ]; @@ -79,6 +83,9 @@ class Origin extends Validator case self::CLIENT_TYPE_FLUTTER_LINUX: case self::CLIENT_TYPE_ANDROID: case self::CLIENT_TYPE_APPLE_IOS: + case self::CLIENT_TYPE_APPLE_MACOS: + case self::CLIENT_TYPE_APPLE_WATCHOS: + case self::CLIENT_TYPE_APPLE_TVOS: $this->clients[] = (isset($platform['key'])) ? $platform['key'] : ''; break; From 5ddce5fbda2613379419d2a89318bff02d857391 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Tue, 7 Feb 2023 19:48:33 +1300 Subject: [PATCH 69/94] Update lock --- composer.lock | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/composer.lock b/composer.lock index 8860f7ccb7..40e0191f81 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": "7e4fe4a68feca880bee0afd38421165e", + "content-hash": "60bbe8610441d8b6e119bd322e0f5a13", "packages": [ { "name": "adhocore/jwt", @@ -2159,16 +2159,16 @@ }, { "name": "utopia-php/messaging", - "version": "0.1.0", + "version": "0.1.1", "source": { "type": "git", "url": "https://github.com/utopia-php/messaging.git", - "reference": "501272fad666f06bec8f130076862e7981a73f8c" + "reference": "a75d66ddd59b834ab500a4878a2c084e6572604a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/messaging/zipball/501272fad666f06bec8f130076862e7981a73f8c", - "reference": "501272fad666f06bec8f130076862e7981a73f8c", + "url": "https://api.github.com/repos/utopia-php/messaging/zipball/a75d66ddd59b834ab500a4878a2c084e6572604a", + "reference": "a75d66ddd59b834ab500a4878a2c084e6572604a", "shasum": "" }, "require": { @@ -2176,9 +2176,9 @@ "php": ">=8.0.0" }, "require-dev": { + "laravel/pint": "^1.2", "phpmailer/phpmailer": "6.6.*", - "phpunit/phpunit": "9.5.*", - "squizlabs/php_codesniffer": "^3.6" + "phpunit/phpunit": "9.5.*" }, "type": "library", "autoload": { @@ -2190,12 +2190,6 @@ "license": [ "MIT" ], - "authors": [ - { - "name": "Jake Barnby", - "email": "jake@appwrite.io" - } - ], "description": "A simple, light and advanced PHP messaging library", "keywords": [ "library", @@ -2207,9 +2201,9 @@ ], "support": { "issues": "https://github.com/utopia-php/messaging/issues", - "source": "https://github.com/utopia-php/messaging/tree/0.1.0" + "source": "https://github.com/utopia-php/messaging/tree/0.1.1" }, - "time": "2022-09-29T11:22:48+00:00" + "time": "2023-02-07T05:42:46+00:00" }, { "name": "utopia-php/orchestration", @@ -2720,16 +2714,16 @@ "packages-dev": [ { "name": "appwrite/sdk-generator", - "version": "0.29.0", + "version": "0.29.4", "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator.git", - "reference": "4d35fb0037aaeca7a5a076e44b7f42bdac2d2e2e" + "reference": "35ec927d1de1854bebe8894e16b1646c3fdd5567" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/4d35fb0037aaeca7a5a076e44b7f42bdac2d2e2e", - "reference": "4d35fb0037aaeca7a5a076e44b7f42bdac2d2e2e", + "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/35ec927d1de1854bebe8894e16b1646c3fdd5567", + "reference": "35ec927d1de1854bebe8894e16b1646c3fdd5567", "shasum": "" }, "require": { @@ -2765,9 +2759,9 @@ "description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms", "support": { "issues": "https://github.com/appwrite/sdk-generator/issues", - "source": "https://github.com/appwrite/sdk-generator/tree/0.29.0" + "source": "https://github.com/appwrite/sdk-generator/tree/0.29.4" }, - "time": "2022-12-26T11:28:04+00:00" + "time": "2023-02-03T05:44:59+00:00" }, { "name": "doctrine/instantiator", From 6026358fb23d1e112f9cbe6c1034c527e15f03e5 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 13 Feb 2023 03:37:34 +0000 Subject: [PATCH 70/94] build using appwrite base docker image --- Dockerfile | 187 +---------------------------------------------------- 1 file changed, 1 insertion(+), 186 deletions(-) diff --git a/Dockerfile b/Dockerfile index 95073df08b..1a77b05937 100755 --- a/Dockerfile +++ b/Dockerfile @@ -27,145 +27,7 @@ ENV VITE_CONSOLE_MODE=$VITE_CONSOLE_MODE RUN npm ci RUN npm run build -FROM php:8.0.18-cli-alpine3.15 as compile - -ARG DEBUG=false -ENV DEBUG=$DEBUG - -ENV PHP_REDIS_VERSION=5.3.7 \ - PHP_MONGODB_VERSION=1.13.0 \ - PHP_SWOOLE_VERSION=v4.8.10 \ - PHP_IMAGICK_VERSION=3.7.0 \ - PHP_YAML_VERSION=2.2.2 \ - PHP_MAXMINDDB_VERSION=v1.11.0 \ - PHP_ZSTD_VERSION="4504e4186e79b197cfcb75d4d09aa47ef7d92fe9" - -RUN \ - apk add --no-cache --virtual .deps \ - make \ - automake \ - autoconf \ - gcc \ - g++ \ - git \ - zlib-dev \ - brotli-dev \ - openssl-dev \ - yaml-dev \ - imagemagick \ - imagemagick-dev \ - libmaxminddb-dev \ - zstd-dev - -RUN docker-php-ext-install sockets - -FROM compile AS redis -RUN \ - # Redis Extension - git clone --depth 1 --branch $PHP_REDIS_VERSION https://github.com/phpredis/phpredis.git && \ - cd phpredis && \ - phpize && \ - ./configure && \ - make && make install - -## Swoole Extension -FROM compile AS swoole -RUN \ - git clone --depth 1 --branch $PHP_SWOOLE_VERSION https://github.com/swoole/swoole-src.git && \ - cd swoole-src && \ - phpize && \ - ./configure --enable-sockets --enable-http2 --enable-openssl && \ - make && make install && \ - cd .. - -## Swoole Debugger setup -RUN if [ "$DEBUG" == "true" ]; then \ - cd /tmp && \ - apk add boost-dev && \ - git clone --depth 1 https://github.com/swoole/yasd && \ - cd yasd && \ - phpize && \ - ./configure && \ - make && make install && \ - cd ..;\ - fi - -## Imagick Extension -FROM compile AS imagick -RUN \ - git clone --depth 1 --branch $PHP_IMAGICK_VERSION https://github.com/imagick/imagick && \ - cd imagick && \ - phpize && \ - ./configure && \ - make && make install - -## YAML Extension -FROM compile AS yaml -RUN \ - git clone --depth 1 --branch $PHP_YAML_VERSION https://github.com/php/pecl-file_formats-yaml && \ - cd pecl-file_formats-yaml && \ - phpize && \ - ./configure && \ - make && make install - -## Maxminddb extension -FROM compile AS maxmind -RUN \ - git clone --depth 1 --branch $PHP_MAXMINDDB_VERSION https://github.com/maxmind/MaxMind-DB-Reader-php.git && \ - cd MaxMind-DB-Reader-php && \ - cd ext && \ - phpize && \ - ./configure && \ - make && make install - -# Mongodb Extension -FROM compile as mongodb -RUN \ - git clone --depth 1 --branch $PHP_MONGODB_VERSION https://github.com/mongodb/mongo-php-driver.git && \ - cd mongo-php-driver && \ - git submodule update --init && \ - phpize && \ - ./configure && \ - make && make install - -# Zstd Compression -FROM compile as zstd -RUN git clone --recursive -n https://github.com/kjdev/php-ext-zstd.git \ - && cd php-ext-zstd \ - && git checkout $PHP_ZSTD_VERSION \ - && phpize \ - && ./configure --with-libzstd \ - && make && make install - - -# Rust Extensions Compile Image -FROM php:8.0.18-cli as rust_compile - -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y - -ENV PATH=/root/.cargo/bin:$PATH - -RUN apt-get update && apt-get install musl-tools build-essential clang-11 git -y -RUN rustup target add $(uname -m)-unknown-linux-musl - -# Install ZigBuild for easier cross-compilation -RUN curl https://ziglang.org/builds/zig-linux-$(uname -m)-0.10.0-dev.2674+d980c6a38.tar.xz --output /tmp/zig.tar.xz -RUN tar -xf /tmp/zig.tar.xz -C /tmp/ && cp -r /tmp/zig-linux-$(uname -m)-0.10.0-dev.2674+d980c6a38 /tmp/zig/ -ENV PATH=/tmp/zig:$PATH -RUN cargo install cargo-zigbuild -ENV RUSTFLAGS="-C target-feature=-crt-static" - -FROM rust_compile as scrypt - -WORKDIR /usr/local/lib/php/extensions/ - -RUN \ - git clone --depth 1 https://github.com/appwrite/php-scrypt.git && \ - cd php-scrypt && \ - cargo zigbuild --workspace --all-targets --target $(uname -m)-unknown-linux-musl --release && \ - mv target/$(uname -m)-unknown-linux-musl/release/libphp_scrypt.so target/libphp_scrypt.so - -FROM php:8.0.18-cli-alpine3.15 as final +FROM appwrite/base:0.1.0 as final LABEL maintainer="team@appwrite.io" @@ -260,38 +122,6 @@ ENV _APP_SERVER=swoole \ _APP_LOGGING_PROVIDER= \ _APP_LOGGING_CONFIG= -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -RUN \ - apk update \ - && apk add --no-cache --virtual .deps \ - make \ - automake \ - autoconf \ - gcc \ - g++ \ - curl-dev \ - && apk add --no-cache \ - libstdc++ \ - certbot \ - brotli-dev \ - yaml-dev \ - imagemagick \ - imagemagick-dev \ - libmaxminddb-dev \ - certbot \ - docker-cli \ - libgomp \ - && docker-php-ext-install sockets opcache pdo_mysql \ - && apk del .deps \ - && rm -rf /var/cache/apk/* - -RUN \ - mkdir -p $DOCKER_CONFIG/cli-plugins \ - && ARCH=$(uname -m) && if [ $ARCH == "armv7l" ]; then ARCH="armv7"; fi \ - && curl -SL https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-linux-$ARCH -o $DOCKER_CONFIG/cli-plugins/docker-compose \ - && chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose - RUN \ if [ "$DEBUG" == "true" ]; then \ apk add boost boost-dev; \ @@ -301,14 +131,6 @@ WORKDIR /usr/src/code COPY --from=composer /usr/local/src/vendor /usr/src/code/vendor COPY --from=node /usr/local/src/console/build /usr/src/code/console -COPY --from=swoole /usr/local/lib/php/extensions/no-debug-non-zts-20200930/swoole.so /usr/local/lib/php/extensions/no-debug-non-zts-20200930/yasd.so* /usr/local/lib/php/extensions/no-debug-non-zts-20200930/ -COPY --from=redis /usr/local/lib/php/extensions/no-debug-non-zts-20200930/redis.so /usr/local/lib/php/extensions/no-debug-non-zts-20200930/ -COPY --from=imagick /usr/local/lib/php/extensions/no-debug-non-zts-20200930/imagick.so /usr/local/lib/php/extensions/no-debug-non-zts-20200930/ -COPY --from=yaml /usr/local/lib/php/extensions/no-debug-non-zts-20200930/yaml.so /usr/local/lib/php/extensions/no-debug-non-zts-20200930/ -COPY --from=maxmind /usr/local/lib/php/extensions/no-debug-non-zts-20200930/maxminddb.so /usr/local/lib/php/extensions/no-debug-non-zts-20200930/ -COPY --from=mongodb /usr/local/lib/php/extensions/no-debug-non-zts-20200930/mongodb.so /usr/local/lib/php/extensions/no-debug-non-zts-20200930/ -COPY --from=scrypt /usr/local/lib/php/extensions/php-scrypt/target/libphp_scrypt.so /usr/local/lib/php/extensions/no-debug-non-zts-20200930/ -COPY --from=zstd /usr/local/lib/php/extensions/no-debug-non-zts-20200930/zstd.so /usr/local/lib/php/extensions/no-debug-non-zts-20200930/ # Add Source Code COPY ./app /usr/src/code/app @@ -358,13 +180,6 @@ RUN chmod +x /usr/local/bin/doctor && \ RUN mkdir -p /etc/letsencrypt/live/ && chmod -Rf 755 /etc/letsencrypt/live/ # Enable Extensions -RUN echo extension=swoole.so >> /usr/local/etc/php/conf.d/swoole.ini -RUN echo extension=redis.so >> /usr/local/etc/php/conf.d/redis.ini -RUN echo extension=imagick.so >> /usr/local/etc/php/conf.d/imagick.ini -RUN echo extension=yaml.so >> /usr/local/etc/php/conf.d/yaml.ini -RUN echo extension=maxminddb.so >> /usr/local/etc/php/conf.d/maxminddb.ini -RUN echo extension=libphp_scrypt.so >> /usr/local/etc/php/conf.d/libphp_scrypt.ini -RUN echo extension=zstd.so >> /usr/local/etc/php/conf.d/zstd.ini RUN if [ "$DEBUG" == "true" ]; then printf "zend_extension=yasd \nyasd.debug_mode=remote \nyasd.init_file=/usr/local/dev/yasd_init.php \nyasd.remote_port=9005 \nyasd.log_level=-1" >> /usr/local/etc/php/conf.d/yasd.ini; fi RUN if [ "$DEBUG" == "true" ]; then echo "opcache.enable=0" >> /usr/local/etc/php/conf.d/appwrite.ini; fi From cdf7731508234b4979bfe6c6d53e5299b169594b Mon Sep 17 00:00:00 2001 From: Boynn Date: Mon, 13 Feb 2023 11:42:03 +0800 Subject: [PATCH 71/94] Document: update CN doc --- README-CN.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README-CN.md b/README-CN.md index 7c9fb1c39c..bff2ca6147 100644 --- a/README-CN.md +++ b/README-CN.md @@ -1,3 +1,6 @@ +> 准备好迎接狂风暴'云'了吗? 🌩 ☂️ +> Appwrite Cloud即将到来!你能够通过https://appwrite.io/cloud了解更多的资讯, 注册即可领取试用额度哦 +

      Appwrite Logo @@ -23,7 +26,7 @@ [**我们发布了 Appwrite Console 2.0 版本,点击这里了解更多!**](https://medium.com/appwrite-io/announcing-console-2-0-2e0e96891cb0?source=friends_link&sk=7a82b4069778e3adc165dc026e960fe1) -Appwrite是一个基于Docker的端到端开发者平台,其容器化的微服务库可应用于网页端,移动端,以及后端。Appwrite 通过视觉化界面极简了从零编写 API 的繁琐过程,在保证软件安全的前提下为开发者创造了一个高效的开发环境。 +Appwrite是一个基于Docker的端到端开发者平台,其容器化的微服务库可应用于网页端,移动端,以及后端。Appwrite 通过视觉化界面简化了从零开始编写 API 的繁琐过程,在保证软件安全的前提下为开发者创造了一个高效的开发环境。 Appwrite 可以提供给开发者用户验证,外部授权,用户数据读写检索,文件储存,图像处理,云函数计算,[等多种服务](https://appwrite.io/docs). @@ -55,7 +58,7 @@ Appwrite 可以提供给开发者用户验证,外部授权,用户数据读 Appwrite 的容器化服务器只需要一行指令就可以运行。您可以使用 docker-compose 在本地主机上运行 Appwrite,也可以在任何其他容器化工具(如 Kubernetes、Docker Swarm 或 Rancher)上运行 Appwrite。 -开始运行 Appwrite 服务器的最简单方法是运行我们的 docker-compose 文件。在运行安装命令之前,请确保您的机器上安装了 [Docker](https://dockerdocs.cn/get-docker/index.html): +启动 Appwrite 服务器的最简单方法是运行我们的 docker-compose 文件。在运行安装命令之前,请确保您的机器上安装了 [Docker](https://dockerdocs.cn/get-docker/index.html): ### Unix @@ -159,7 +162,7 @@ Appwrite API 界面层利用后台缓存和任务委派来提供极速的响应 ## 贡献代码 -所有代码贡献 - 包括来自具有直接提交更改权限的贡献者 - 都必须提交PR请求并在合并分支之前得到核心开发人员的批准。这是为了确保正确审查所有代码。 +为了确保正确审查,所有代码贡献 - 包括来自具有直接提交更改权限的贡献者 - 都必须提交PR请求并在合并分支之前得到核心开发人员的批准。 我们欢迎所有人提交PR!如果您愿意提供帮助,可以在 [贡献指南](CONTRIBUTING.md) 中了解有关如何为项目做出贡献的更多信息。 From bff39aea081e183b85245137764db533ddbcc53d Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 13 Feb 2023 05:55:11 +0000 Subject: [PATCH 72/94] slow test in stderr --- tests/extensions/TestHook.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/extensions/TestHook.php b/tests/extensions/TestHook.php index c23f258a00..dd67d5134a 100644 --- a/tests/extensions/TestHook.php +++ b/tests/extensions/TestHook.php @@ -3,9 +3,11 @@ namespace Appwrite\Tests; use PHPUnit\Runner\AfterTestHook; +use Exception; class TestHook implements AfterTestHook { + protected const MAX_SECONDS_ALLOWED = 3; public function executeAfterTest(string $test, float $time): void { printf( @@ -13,5 +15,9 @@ class TestHook implements AfterTestHook $test, $time * 1000 ); + + if($time > self::MAX_SECONDS_ALLOWED) { + fwrite(STDERR, sprintf("\nThe %s test is slow, it took %s seconds!\n", $test, $time)); + } } } From 0045eefd1eaea25a5cbd8686a9325b02dc895c4f Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 13 Feb 2023 06:02:20 +0000 Subject: [PATCH 73/94] slow period --- tests/extensions/TestHook.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/extensions/TestHook.php b/tests/extensions/TestHook.php index dd67d5134a..0084cc6aaa 100644 --- a/tests/extensions/TestHook.php +++ b/tests/extensions/TestHook.php @@ -7,7 +7,7 @@ use Exception; class TestHook implements AfterTestHook { - protected const MAX_SECONDS_ALLOWED = 3; + protected const MAX_SECONDS_ALLOWED = 15; public function executeAfterTest(string $test, float $time): void { printf( From da873b287666880e93d456823676c9be5f0884a3 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 13 Feb 2023 06:24:22 +0000 Subject: [PATCH 74/94] fix colored output --- tests/extensions/TestHook.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/extensions/TestHook.php b/tests/extensions/TestHook.php index 0084cc6aaa..2c2ba937bd 100644 --- a/tests/extensions/TestHook.php +++ b/tests/extensions/TestHook.php @@ -17,7 +17,7 @@ class TestHook implements AfterTestHook ); if($time > self::MAX_SECONDS_ALLOWED) { - fwrite(STDERR, sprintf("\nThe %s test is slow, it took %s seconds!\n", $test, $time)); + fwrite(STDOUT, sprintf("\e[31mThe %s test is slow, it took %s seconds!\n\e[0m", $test, $time)); } } } From 488d3ec7e8e5e804010b2ad5f06320bf18d4a7f9 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Mon, 13 Feb 2023 06:26:36 +0000 Subject: [PATCH 75/94] fix lint error --- tests/extensions/TestHook.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/extensions/TestHook.php b/tests/extensions/TestHook.php index 2c2ba937bd..67c1215c4c 100644 --- a/tests/extensions/TestHook.php +++ b/tests/extensions/TestHook.php @@ -16,7 +16,7 @@ class TestHook implements AfterTestHook $time * 1000 ); - if($time > self::MAX_SECONDS_ALLOWED) { + if ($time > self::MAX_SECONDS_ALLOWED) { fwrite(STDOUT, sprintf("\e[31mThe %s test is slow, it took %s seconds!\n\e[0m", $test, $time)); } } From 5a665f3ad16a013c25bf8989c77d821e5ef03201 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Mon, 13 Feb 2023 14:18:04 +0000 Subject: [PATCH 76/94] Update Dockerfile --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 95073df08b..d64d33ea1f 100755 --- a/Dockerfile +++ b/Dockerfile @@ -20,9 +20,11 @@ WORKDIR /usr/local/src/console ARG VITE_GA_PROJECT ARG VITE_CONSOLE_MODE +ARG VITE_APPWRITE_GROWTH_ENDPOINT ENV VITE_GA_PROJECT=$VITE_GA_PROJECT ENV VITE_CONSOLE_MODE=$VITE_CONSOLE_MODE +ENV VITE_APPWRITE_GROWTH_ENDPOINT=$VITE_APPWRITE_GROWTH_ENDPOINT RUN npm ci RUN npm run build From 1e9bbdbda02e15e6c000deeffd577641628b51f5 Mon Sep 17 00:00:00 2001 From: Bradley Schofield Date: Mon, 13 Feb 2023 14:52:58 +0000 Subject: [PATCH 77/94] Add Default growth server --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d64d33ea1f..de60b78772 100755 --- a/Dockerfile +++ b/Dockerfile @@ -20,7 +20,7 @@ WORKDIR /usr/local/src/console ARG VITE_GA_PROJECT ARG VITE_CONSOLE_MODE -ARG VITE_APPWRITE_GROWTH_ENDPOINT +ARG VITE_APPWRITE_GROWTH_ENDPOINT=https://growth.appwrite.io/v1 ENV VITE_GA_PROJECT=$VITE_GA_PROJECT ENV VITE_CONSOLE_MODE=$VITE_CONSOLE_MODE From 88e9099e87930643fefc40185ca3f44c9245929b Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Mon, 13 Feb 2023 11:15:09 -0800 Subject: [PATCH 78/94] Update tests CI to cache docker layers --- .github/workflows/tests.yml | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 99fc5dc6e3..4cf3d805da 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -21,18 +21,28 @@ jobs: - run: git checkout HEAD^2 if: ${{ github.event_name == 'pull_request' }} + # This is a separate action that sets up buildx runner + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Build Appwrite - # Upstream bug causes buildkit pulls to fail so prefetch base images - # https://github.com/moby/moby/issues/41864 + uses: docker/build-push-action@v2 + with: + context: . + push: false + tags: appwrite-dev + cache-from: type=gha + cache-to: type=gha,mode=max + build-args: | + DEBUG=false + TESTING=true + VERSION=dev + + - name: Start Appwrite run: | - export COMPOSE_INTERACTIVE_NO_CLI - export DOCKER_BUILDKIT=1 - export COMPOSE_DOCKER_CLI_BUILD=1 - export BUILDKIT_PROGRESS=plain - docker pull composer:2.0 - docker compose build appwrite docker compose up -d sleep 30 + - name: Doctor run: docker compose exec -T appwrite doctor @@ -41,3 +51,13 @@ jobs: - name: Run Tests run: docker compose exec -T appwrite test --debug + + # This ugly bit is necessary if you don't want your cache to grow forever + # until it hits GitHub's limit of 5GB. + # Temp fix + # https://github.com/docker/build-push-action/issues/252 + # https://github.com/moby/buildkit/issues/1896 + - name: Move cache + run: | + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache \ No newline at end of file From 57c445868ecf0f720fbd23b55d239b0418c3a4aa Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Mon, 13 Feb 2023 13:14:15 -0800 Subject: [PATCH 79/94] Remove github cache cleanup --- .github/workflows/tests.yml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4cf3d805da..52a3a11165 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -50,14 +50,4 @@ jobs: run: docker compose exec -T appwrite vars - name: Run Tests - run: docker compose exec -T appwrite test --debug - - # This ugly bit is necessary if you don't want your cache to grow forever - # until it hits GitHub's limit of 5GB. - # Temp fix - # https://github.com/docker/build-push-action/issues/252 - # https://github.com/moby/buildkit/issues/1896 - - name: Move cache - run: | - rm -rf /tmp/.buildx-cache - mv /tmp/.buildx-cache-new /tmp/.buildx-cache \ No newline at end of file + run: docker compose exec -T appwrite test --debug \ No newline at end of file From 037d330641ee165ca9a55f6dced675358596b026 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Mon, 13 Feb 2023 13:26:26 -0800 Subject: [PATCH 80/94] Ensure image is added to local registry --- .github/workflows/tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 52a3a11165..51e14b17a5 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -31,6 +31,7 @@ jobs: context: . push: false tags: appwrite-dev + load: true cache-from: type=gha cache-to: type=gha,mode=max build-args: | From 7790079bb2b3167c4355af0f8008f674d728f96e Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Mon, 13 Feb 2023 15:55:54 -0800 Subject: [PATCH 81/94] Bump version to 1.2.1 --- README-CN.md | 6 +++--- README.md | 6 +++--- SECURITY.md | 14 +++++++------- app/init.php | 2 +- src/Appwrite/Migration/Migration.php | 1 + 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/README-CN.md b/README-CN.md index 7c9fb1c39c..3fff2cea99 100644 --- a/README-CN.md +++ b/README-CN.md @@ -64,7 +64,7 @@ docker run -it --rm \ --volume /var/run/docker.sock:/var/run/docker.sock \ --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \ --entrypoint="install" \ - appwrite/appwrite:1.2.0 + appwrite/appwrite:1.2.1 ``` ### Windows @@ -76,7 +76,7 @@ docker run -it --rm ^ --volume //var/run/docker.sock:/var/run/docker.sock ^ --volume "%cd%"/appwrite:/usr/src/code/appwrite:rw ^ --entrypoint="install" ^ - appwrite/appwrite:1.2.0 + appwrite/appwrite:1.2.1 ``` #### PowerShell @@ -86,7 +86,7 @@ docker run -it --rm ` --volume /var/run/docker.sock:/var/run/docker.sock ` --volume ${pwd}/appwrite:/usr/src/code/appwrite:rw ` --entrypoint="install" ` - appwrite/appwrite:1.2.0 + appwrite/appwrite:1.2.1 ``` 运行后,可以在浏览器上访问 http://localhost 找到 Appwrite 控制台。在非 Linux 的本机主机上完成安装后,服务器可能需要几分钟才能启动。 diff --git a/README.md b/README.md index 43808cac4a..fbf577f100 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ docker run -it --rm \ --volume /var/run/docker.sock:/var/run/docker.sock \ --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \ --entrypoint="install" \ - appwrite/appwrite:1.2.0 + appwrite/appwrite:1.2.1 ``` ### Windows @@ -87,7 +87,7 @@ docker run -it --rm ^ --volume //var/run/docker.sock:/var/run/docker.sock ^ --volume "%cd%"/appwrite:/usr/src/code/appwrite:rw ^ --entrypoint="install" ^ - appwrite/appwrite:1.2.0 + appwrite/appwrite:1.2.1 ``` #### PowerShell @@ -97,7 +97,7 @@ docker run -it --rm ` --volume /var/run/docker.sock:/var/run/docker.sock ` --volume ${pwd}/appwrite:/usr/src/code/appwrite:rw ` --entrypoint="install" ` - appwrite/appwrite:1.2.0 + appwrite/appwrite:1.2.1 ``` Once the Docker installation is complete, go to http://localhost to access the Appwrite console from your browser. Please note that on non-Linux native hosts, the server might take a few minutes to start after completing the installation. diff --git a/SECURITY.md b/SECURITY.md index d4addecf80..98a386a461 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,13 +2,13 @@ ## Supported Versions -| Version | Supported | -| ------- | ------------------ | -| <= 0.14 | :x: | -| 1.15.x | :white_check_mark: | -| 1.0.x | :white_check_mark: | -| 1.1.x | :white_check_mark: | -| 1.2.x | :white_check_mark: | +| Version | Supported | +| --------- | ------------------ | +| <= 0.14.x | :x: | +| 0.15.x | :white_check_mark: | +| 1.0.x | :white_check_mark: | +| 1.1.x | :white_check_mark: | +| 1.2.x | :white_check_mark: | ## Reporting a Vulnerability diff --git a/app/init.php b/app/init.php index bbe145cb3b..350f418a91 100644 --- a/app/init.php +++ b/app/init.php @@ -100,7 +100,7 @@ const APP_LIMIT_LIST_DEFAULT = 25; // Default maximum number of items to return const APP_KEY_ACCCESS = 24 * 60 * 60; // 24 hours const APP_CACHE_UPDATE = 24 * 60 * 60; // 24 hours const APP_CACHE_BUSTER = 501; -const APP_VERSION_STABLE = '1.2.0'; +const APP_VERSION_STABLE = '1.2.1'; const APP_DATABASE_ATTRIBUTE_EMAIL = 'email'; const APP_DATABASE_ATTRIBUTE_ENUM = 'enum'; const APP_DATABASE_ATTRIBUTE_IP = 'ip'; diff --git a/src/Appwrite/Migration/Migration.php b/src/Appwrite/Migration/Migration.php index b764641279..d704281007 100644 --- a/src/Appwrite/Migration/Migration.php +++ b/src/Appwrite/Migration/Migration.php @@ -49,6 +49,7 @@ abstract class Migration '1.1.1' => 'V16', '1.1.2' => 'V16', '1.2.0' => 'V17', + '1.2.1' => 'V17', ]; /** From bbd39582baad7de04ac78883968e4d763c11774a Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Mon, 13 Feb 2023 16:21:45 -0800 Subject: [PATCH 82/94] Update API specs --- app/config/specs/open-api3-1.2.x-client.json | 2 +- app/config/specs/open-api3-1.2.x-console.json | 2 +- app/config/specs/open-api3-1.2.x-server.json | 2 +- 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-1.2.x-client.json | 2 +- app/config/specs/swagger2-1.2.x-console.json | 2 +- app/config/specs/swagger2-1.2.x-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 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/config/specs/open-api3-1.2.x-client.json b/app/config/specs/open-api3-1.2.x-client.json index ba3a5eae4d..d355f1924d 100644 --- a/app/config/specs/open-api3-1.2.x-client.json +++ b/app/config/specs/open-api3-1.2.x-client.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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":"1.2.1","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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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 European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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-1.2.x-console.json b/app/config/specs/open-api3-1.2.x-console.json index f74086bb5d..cc5455fbba 100644 --- a/app/config/specs/open-api3-1.2.x-console.json +++ b/app/config/specs/open-api3-1.2.x-console.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"patch":{"summary":"Update Project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":111,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","x-example":1}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/{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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":123,"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":107,"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]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.2.1","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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"patch":{"summary":"Update Project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":111,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","x-example":1}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/{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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":123,"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":107,"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]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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 European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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-1.2.x-server.json b/app/config/specs/open-api3-1.2.x-server.json index 33e0c22a0e..200db13211 100644 --- a/app/config/specs/open-api3-1.2.x-server.json +++ b/app/config/specs/open-api3-1.2.x-server.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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":"1.2.1","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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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 European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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-client.json b/app/config/specs/open-api3-latest-client.json index 6a7b3f2955..d355f1924d 100644 --- a/app/config/specs/open-api3-latest-client.json +++ b/app/config/specs/open-api3-latest-client.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/graphql":{"get":{"summary":"GraphQL Endpoint","operationId":"graphqlGet","tags":["graphql"],"description":"Execute a GraphQL query.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"get","weight":237,"cookies":false,"type":"","demo":"graphql\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/get.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"query","description":"The query to execute.","required":true,"schema":{"type":"string","x-example":"[QUERY]"},"in":"query"},{"name":"operationName","description":"The name of the operation to execute.","required":false,"schema":{"type":"string","x-example":"[OPERATION_NAME]","default":""},"in":"query"},{"name":"variables","description":"The JSON encoded variables to use in the query.","required":false,"schema":{"type":"string","x-example":"[VARIABLES]","default":""},"in":"query"}]},"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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":"1.2.1","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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/locale"}}}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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 European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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 ad946c53f3..cc5455fbba 100644 --- a/app/config/specs/open-api3-latest-console.json +++ b/app/config/specs/open-api3-latest-console.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"get":{"summary":"GraphQL Endpoint","operationId":"graphqlGet","tags":["graphql"],"description":"Execute a GraphQL query.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"get","weight":237,"cookies":false,"type":"","demo":"graphql\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/get.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"query","description":"The query to execute.","required":true,"schema":{"type":"string","x-example":"[QUERY]"},"in":"query"},{"name":"operationName","description":"The name of the operation to execute.","required":false,"schema":{"type":"string","x-example":"[OPERATION_NAME]","default":""},"in":"query"},{"name":"variables","description":"The JSON encoded variables to use in the query.","required":false,"schema":{"type":"string","x-example":"[VARIABLES]","default":""},"in":"query"}]},"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"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":111,"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. Value allowed is between 1-100. Default is 10","x-example":1}},"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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":123,"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":107,"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]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"securitySchemes":{"Project":{"type":"apiKey","name":"X-Appwrite-Project","description":"Your project ID","in":"header","x-appwrite":{"demo":"5df5acd0d48c2"}},"Key":{"type":"apiKey","name":"X-Appwrite-Key","description":"Your secret API key","in":"header","x-appwrite":{"demo":"919c2d18fb5d4...a2ae413da83346ad2"}},"JWT":{"type":"apiKey","name":"X-Appwrite-JWT","description":"Your secret JSON Web Token","in":"header"},"Locale":{"type":"apiKey","name":"X-Appwrite-Locale","description":"","in":"header","x-appwrite":{"demo":"en"}},"Mode":{"type":"apiKey","name":"X-Appwrite-Mode","description":"","in":"header","x-appwrite":{"demo":""}}}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"openapi":"3.0.0","info":{"version":"1.2.1","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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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"]}}}}}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}}}}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"File"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"}},"required":["userId","phone"]}}}}},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","x-example":"[SECRET]"}},"required":["userId","secret"]}}}}}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabases"}}}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageCollection"}}}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageDatabase"}}}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"range","description":"`Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"schema":{"type":"string","x-example":"24h","default":"30d"},"in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/function"}}}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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":"functionsGetFunctionUsage","tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/usageFunctions"}}}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","tags":["projects"],"description":"","responses":{"201":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"create","weight":101,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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]"},"region":{"type":"string","description":"Project Region.","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","x-example":0}},"required":["duration"]}}}}}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"patch":{"summary":"Update Project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","tags":["projects"],"description":"","responses":{"200":{"description":"Project","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/project"}}}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":111,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"schema":{"type":"string","x-example":"[PROJECT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","x-example":1}},"required":["limit"]}}}}}},"\/projects\/{projectId}\/auth\/{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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["name","scopes"]}}}}},"delete":{"summary":"Delete Key","operationId":"projectsDeleteKey","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteKey","weight":123,"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":107,"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]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","x-example":false}},"required":["provider"]}}}}}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platformList"}}}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}}}}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","tags":["projects"],"description":"","responses":{"200":{"description":"Platform","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/platform"}}}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}}}},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}}}},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/webhook"}}}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"schema":{"type":"string","x-example":"[TEAM_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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 European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"$ref":"#\/components\/schemas\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"$ref":"#\/components\/schemas\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"$ref":"#\/components\/schemas\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"$ref":"#\/components\/schemas\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"$ref":"#\/components\/schemas\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"$ref":"#\/components\/schemas\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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 a76d6fc310..200db13211 100644 --- a/app/config/specs/open-api3-latest-server.json +++ b/app/config/specs/open-api3-latest-server.json @@ -1 +1 @@ -{"openapi":"3.0.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"servers":[{"url":"https:\/\/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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"get":{"summary":"GraphQL Endpoint","operationId":"graphqlGet","tags":["graphql"],"description":"Execute a GraphQL query.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"get","weight":237,"cookies":false,"type":"","demo":"graphql\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/get.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"query","description":"The query to execute.","required":true,"schema":{"type":"string","x-example":"[QUERY]"},"in":"query"},{"name":"operationName","description":"The name of the operation to execute.","required":false,"schema":{"type":"string","x-example":"[OPERATION_NAME]","default":""},"in":"query"},{"name":"variables","description":"The JSON encoded variables to use in the query.","required":false,"schema":{"type":"string","x-example":"[VARIABLES]","default":""},"in":"query"}]},"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[FILE_ID]","x-upload-id":true},"file":{"type":"string","description":"Binary file.","x-example":null},"permissions":{"type":"array","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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":"1.2.1","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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","x-example":"password"}},"required":["phone","password"]}}}}}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","tags":["account"],"description":"Get 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":19,"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 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":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/session"}}}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/account"}}}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}}}}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/token"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":400},"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"schema":{"type":"string","default":""},"in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image"}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"schema":{"type":"integer","format":"int32","x-example":1,"default":400},"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"schema":{"type":"integer","format":"int32","x-example":0,"default":1},"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"schema":{"type":"boolean","x-example":false,"default":false},"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/databaseList"}}}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["databaseId","name"]}}}}}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/database"}}}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["name"]}}}}},"delete":{"summary":"Delete Database","operationId":"databasesDelete","tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collectionList"}}}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false}},"required":["collectionId","name"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/collection"}}}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeList"}}}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeBoolean"}}}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeDatetime"}}}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEmail"}}}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeEnum"}}}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","elements","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeFloat"}}}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeInteger"}}}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeIp"}}}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeString"}}}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","x-example":1},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","size","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/attributeUrl"}}}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":null},"required":{"type":"boolean","description":"Is attribute required?","x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","x-example":false}},"required":["key","required"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","content":{"application\/json":{"schema":{"oneOf":[{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]}}}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Attribute Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/documentList"}}}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/document"}}}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"documentId","description":"Document ID.","required":true,"schema":{"type":"string","x-example":"[DOCUMENT_ID]"},"in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/indexList"}}}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","tags":["databases"],"description":"","responses":{"202":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","x-example":null},"type":{"type":"string","description":"Index type.","x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}}}}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","tags":["databases"],"description":"","responses":{"200":{"description":"Index","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/index"}}}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"schema":{"type":"string","x-example":"[DATABASE_ID]"},"in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"schema":{"type":"string","x-example":"[COLLECTION_ID]"},"in":"path"},{"name":"key","description":"Index Key.","required":true,"schema":{"type":"string"},"in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/functionList"}}}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"required":["functionId","name","execute","runtime"]}}}}}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/runtimeList"}}}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/deployment"}}}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"schema":{"type":"string","x-example":"[DEPLOYMENT_ID]"},"in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"schema":{"type":"string","x-example":"[BUILD_ID]"},"in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/executionList"}}}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/execution"}}}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variableList"}}}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key","value"]}}}}}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/variable"}}}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","x-example":"[VALUE]"}},"required":["key"]}}}}},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"schema":{"type":"string","x-example":"[FUNCTION_ID]"},"in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"schema":{"type":"string","x-example":"[VARIABLE_ID]"},"in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/any"}}}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/healthStatus"}}}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/continentList"}}}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/countryList"}}}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/phoneList"}}}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/currencyList"}}}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/languageList"}}}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["bucketId","name"]}}}}}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/bucket"}}}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","x-example":false}},"required":["name"]}}}}},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/fileList"}}}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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},"permissions":{"type":"array","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["fileId","file"]}}}}}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/file"}}}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}}}},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/teamList"}}}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are 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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}}}}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/team"}}}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","x-example":"https:\/\/example.com"},"name":{"type":"string","description":"Name of the new team member. Max length: 128 chars.","x-example":"[NAME]"}},"required":["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":"Membership","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membership"}}}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","x-example":null,"items":{"type":"string"}}},"required":["roles"]}}}}},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"schema":{"type":"string","x-example":"[SEARCH]","default":""},"in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId"]}}}}}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password"]}}}}}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}}}}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}}}}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/logList"}}}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[]},"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/membershipList"}}}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","x-example":"+12065550100"}},"required":["number"]}}}}}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/preferences"}}}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/sessionList"}}}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","x-example":false}},"required":["emailVerification"]}}}}}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/user"}}}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"schema":{"type":"string","x-example":"[USER_ID]"},"in":"path"}],"requestBody":{"content":{"application\/json":{"schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","x-example":false}},"required":["phoneVerification"]}}}}}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"components":{"schemas":{"any":{"description":"Any","type":"object","additionalProperties":true},"error":{"description":"Error","type":"object","properties":{"message":{"type":"string","description":"Error message.","x-example":"Not found"},"code":{"type":"string","description":"Error code.","x-example":"404"},"type":{"type":"string","description":"Error type. You can learn more about all the error types at https:\/\/appwrite.io\/docs\/error-codes#errorTypes","x-example":"not_found"},"version":{"type":"string","description":"Server version number.","x-example":"1.0"}},"required":["message","code","type","version"]},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"$ref":"#\/components\/schemas\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"$ref":"#\/components\/schemas\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"$ref":"#\/components\/schemas\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"$ref":"#\/components\/schemas\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"$ref":"#\/components\/schemas\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"$ref":"#\/components\/schemas\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"$ref":"#\/components\/schemas\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"$ref":"#\/components\/schemas\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"$ref":"#\/components\/schemas\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"$ref":"#\/components\/schemas\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"$ref":"#\/components\/schemas\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"$ref":"#\/components\/schemas\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"$ref":"#\/components\/schemas\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"$ref":"#\/components\/schemas\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"$ref":"#\/components\/schemas\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"$ref":"#\/components\/schemas\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"$ref":"#\/components\/schemas\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"$ref":"#\/components\/schemas\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"$ref":"#\/components\/schemas\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"$ref":"#\/components\/schemas\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"anyOf":[{"$ref":"#\/components\/schemas\/attributeBoolean"},{"$ref":"#\/components\/schemas\/attributeInteger"},{"$ref":"#\/components\/schemas\/attributeFloat"},{"$ref":"#\/components\/schemas\/attributeEmail"},{"$ref":"#\/components\/schemas\/attributeEnum"},{"$ref":"#\/components\/schemas\/attributeUrl"},{"$ref":"#\/components\/schemas\/attributeIp"},{"$ref":"#\/components\/schemas\/attributeDatetime"},{"$ref":"#\/components\/schemas\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","nullable":true}},"required":["key","type","status","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":[],"nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"oneOf":[{"$ref":"#\/components\/schemas\/algoArgon2"},{"$ref":"#\/components\/schemas\/algoScrypt"},{"$ref":"#\/components\/schemas\/algoScryptModified"},{"$ref":"#\/components\/schemas\/algoBcrypt"},{"$ref":"#\/components\/schemas\/algoPhpass"},{"$ref":"#\/components\/schemas\/algoSha"},{"$ref":"#\/components\/schemas\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"$ref":"#\/components\/schemas\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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 European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"$ref":"#\/components\/schemas\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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-1.2.x-client.json b/app/config/specs/swagger2-1.2.x-client.json index 657cf40429..ac47ea6cf6 100644 --- a/app/config/specs/swagger2-1.2.x-client.json +++ b/app/config/specs/swagger2-1.2.x-client.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.2.1","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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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 European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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-1.2.x-console.json b/app/config/specs/swagger2-1.2.x-console.json index 49a30f8c49..04bad412dc 100644 --- a/app/config/specs/swagger2-1.2.x-console.json +++ b/app/config/specs/swagger2-1.2.x-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"patch":{"summary":"Update Project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":111,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/{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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":123,"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":107,"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":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.2.1","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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"patch":{"summary":"Update Project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":111,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/{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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":123,"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":107,"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":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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 European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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-1.2.x-server.json b/app/config/specs/swagger2-1.2.x-server.json index f738402e94..3b33a88517 100644 --- a/app/config/specs/swagger2-1.2.x-server.json +++ b/app/config/specs/swagger2-1.2.x-server.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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":"1.2.1","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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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 European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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-client.json b/app/config/specs/swagger2-latest-client.json index cc67367ea9..ac47ea6cf6 100644 --- a/app/config/specs/swagger2-latest-client.json +++ b/app/config/specs/swagger2-latest-client.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/graphql":{"get":{"summary":"GraphQL Endpoint","operationId":"graphqlGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL query.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"get","weight":237,"cookies":false,"type":"","demo":"graphql\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/get.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"query","description":"The query to execute.","required":true,"type":"string","x-example":"[QUERY]","in":"query"},{"name":"operationName","description":"The name of the operation to execute.","required":false,"type":"string","x-example":"[OPERATION_NAME]","default":"","in":"query"},{"name":"variables","description":"The JSON encoded variables to use in the query.","required":false,"type":"string","x-example":"[VARIABLES]","default":"","in":"query"}]},"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.2.1","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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/locale":{"get":{"summary":"Get User Locale","operationId":"localeGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n\n([IP Geolocation by DB-IP](https:\/\/db-ip.com))","responses":{"200":{"description":"Locale","schema":{"$ref":"#\/definitions\/locale"}}},"x-appwrite":{"method":"get","weight":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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 European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"country":{"description":"Country","type":"object","properties":{"name":{"type":"string","description":"Country name.","x-example":"United States"},"code":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"}},"required":["name","code"]},"continent":{"description":"Continent","type":"object","properties":{"name":{"type":"string","description":"Continent name.","x-example":"Europe"},"code":{"type":"string","description":"Continent two letter code.","x-example":"EU"}},"required":["name","code"]},"language":{"description":"Language","type":"object","properties":{"name":{"type":"string","description":"Language name.","x-example":"Italian"},"code":{"type":"string","description":"Language two-character ISO 639-1 codes.","x-example":"it"},"nativeName":{"type":"string","description":"Language native name.","x-example":"Italiano"}},"required":["name","code","nativeName"]},"currency":{"description":"Currency","type":"object","properties":{"symbol":{"type":"string","description":"Currency symbol.","x-example":"$"},"name":{"type":"string","description":"Currency name.","x-example":"US dollar"},"symbolNative":{"type":"string","description":"Currency native symbol.","x-example":"$"},"decimalDigits":{"type":"integer","description":"Number of decimal digits.","x-example":2,"format":"int32"},"rounding":{"type":"number","description":"Currency digit rounding.","x-example":0,"format":"double"},"code":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format.","x-example":"USD"},"namePlural":{"type":"string","description":"Currency plural name","x-example":"US dollars"}},"required":["symbol","name","symbolNative","decimalDigits","rounding","code","namePlural"]},"phone":{"description":"Phone","type":"object","properties":{"code":{"type":"string","description":"Phone code.","x-example":"+1"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["code","countryCode","countryName"]}},"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 b9f878a309..04bad412dc 100644 --- a/app/config/specs/swagger2-latest-console.json +++ b/app/config/specs/swagger2-latest-console.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password. 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","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":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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":12,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user..\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"get":{"summary":"GraphQL Endpoint","operationId":"graphqlGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL query.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"get","weight":237,"cookies":false,"type":"","demo":"graphql\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/get.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"query","description":"The query to execute.","required":true,"type":"string","x-example":"[QUERY]","in":"query"},{"name":"operationName","description":"The name of the operation to execute.","required":false,"type":"string","x-example":"[OPERATION_NAME]","default":"","in":"query"},{"name":"variables","description":"The JSON encoded variables to use in the query.","required":false,"type":"string","x-example":"[VARIABLES]","default":"","in":"query"}]},"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"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":111,"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. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":123,"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":107,"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":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-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","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"externalDocs":{"description":"Full API docs, specs and tutorials","url":"https:\/\/appwrite.io\/docs"}} \ No newline at end of file +{"swagger":"2.0","info":{"version":"1.2.1","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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"create","weight":6,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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"]}}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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 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":17,"cookies":false,"type":"","demo":"account\/create-j-w-t.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-jwt.md","rate-limit":100,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"account","platforms":["client"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}]}},"\/account\/logs":{"get":{"summary":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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":16,"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\/email":{"post":{"summary":"Create Email Session","operationId":"accountCreateEmailSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Allow the user to login into their account by providing a valid email and password combination. This route will create a new session for the user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"createEmailSession","weight":7,"cookies":false,"type":"","demo":"account\/create-email-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-session-email.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"]}}]}},"\/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. If the provided user ID has not be registered, a new user will be created. When the user clicks the link in the email, the user is redirected back to the URL you provided with the secret key and userId values attached to the URL query string. Use the query string parameters to submit a request to the [PUT \/account\/sessions\/magic-url](\/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.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createMagicURLSession","weight":12,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 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":13,"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 OAuth2 Session","operationId":"accountCreateOAuth2Session","consumes":["application\/json"],"produces":["text\/html"],"tags":["account"],"description":"Allow the user to login to their account using the OAuth2 provider of their choice. Each OAuth2 provider should be enabled from the Appwrite console first. Use the success and failure arguments to provide a redirect URL's back to your app when login is completed.\n\nIf there is already an active session, the new session will be attached to the logged-in account. If there are no active sessions, the server will attempt to look for a user with the same email address as the email received from the OAuth2 provider and attach the new session to the existing user. If no matching user is found - the server will create a new user.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).\n","responses":{"301":{"description":"No content"}},"x-appwrite":{"method":"createOAuth2Session","weight":8,"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, auth0, authentik, autodesk, bitbucket, bitly, box, dailymotion, discord, disqus, dropbox, etsy, facebook, github, gitlab, google, linkedin, microsoft, notion, okta, paypal, paypalSandbox, podio, salesforce, slack, spotify, stripe, tradeshift, tradeshiftBox, twitch, wordpress, yahoo, yammer, yandex, zoom.","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. Maximum of 100 scopes are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/sessions\/phone":{"post":{"summary":"Create Phone session","operationId":"accountCreatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Sends the user an SMS with a secret key for creating a session. If the provided user ID has not be registered, a new user will be created. Use the returned user ID and secret and submit a request to the [PUT \/account\/sessions\/phone](\/docs\/client\/account#accountUpdatePhoneSession) endpoint to complete the login process. The secret sent to the user's phone is valid for 15 minutes.\n\nA user is limited to 10 active sessions at a time by default. [Learn more about session limits](\/docs\/authentication#limits).","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneSession","weight":14,"cookies":false,"type":"","demo":"account\/create-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"}},"required":["userId","phone"]}}]},"put":{"summary":"Create Phone Session (confirmation)","operationId":"accountUpdatePhoneSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete creating a session with SMS. Use the **userId** from the [createPhoneSession](\/docs\/client\/account#accountCreatePhoneSession) endpoint and the **secret** received via SMS to successfully update and confirm the phone session.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updatePhoneSession","weight":15,"cookies":false,"type":"","demo":"account\/update-phone-session.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-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\/{sessionId}":{"get":{"summary":"Get Session","operationId":"accountGetSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to get a logged in user's session using a Session ID. Inputting 'current' will return the current session being used.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"getSession","weight":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID.","default":null,"x-example":"[USER_ID]"},"secret":{"type":"string","description":"Valid verification token.","default":null,"x-example":"[SECRET]"}},"required":["userId","secret"]}}]}},"\/avatars\/browsers\/{code}":{"get":{"summary":"Get Browser Icon","operationId":"avatarsGetBrowser","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"You can use this endpoint to show different browser icons to your users. The code argument receives the browser code as it appears in your user [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabases","schema":{"$ref":"#\/definitions\/usageDatabases"}}},"x-appwrite":{"method":"getUsage","weight":79,"cookies":false,"type":"","demo":"databases\/get-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}\/logs":{"get":{"summary":"List Document Logs","operationId":"databasesListDocumentLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the document activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listDocumentLogs","weight":76,"cookies":false,"type":"","demo":"databases\/list-document-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/logs":{"get":{"summary":"List Collection Logs","operationId":"databasesListCollectionLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the collection activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listCollectionLogs","weight":54,"cookies":false,"type":"","demo":"databases\/list-collection-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/usage":{"get":{"summary":"Get usage stats for a collection","operationId":"databasesGetCollectionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageCollection","schema":{"$ref":"#\/definitions\/usageCollection"}}},"x-appwrite":{"method":"getCollectionUsage","weight":81,"cookies":false,"type":"","demo":"databases\/get-collection-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/logs":{"get":{"summary":"List Database Logs","operationId":"databasesListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get the database activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":48,"cookies":false,"type":"","demo":"databases\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/databases\/{databaseId}\/usage":{"get":{"summary":"Get usage stats for the database","operationId":"databasesGetDatabaseUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"UsageDatabase","schema":{"$ref":"#\/definitions\/usageDatabase"}}},"x-appwrite":{"method":"getDatabaseUsage","weight":80,"cookies":false,"type":"","demo":"databases\/get-database-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"range","description":"`Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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\/usage":{"get":{"summary":"Get Functions Usage","operationId":"functionsGetUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getUsage","weight":193,"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":"range","description":"Date range.","required":false,"type":"string","x-example":"24h","default":"30d","in":"query"}]}},"\/functions\/{functionId}":{"get":{"summary":"Get Function","operationId":"functionsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a function by its unique ID.","responses":{"200":{"description":"Function","schema":{"$ref":"#\/definitions\/function"}}},"x-appwrite":{"method":"get","weight":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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":"functionsGetFunctionUsage","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"","responses":{"200":{"description":"UsageFunctions","schema":{"$ref":"#\/definitions\/usageFunctions"}}},"x-appwrite":{"method":"getFunctionUsage","weight":192,"cookies":false,"type":"","demo":"functions\/get-function-usage.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["console"],"packaging":false,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":102,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, teamId","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Project","operationId":"projectsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"201":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"create","weight":101,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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]"},"region":{"type":"string","description":"Project Region.","default":"default","x-example":"default"},"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":103,"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":105,"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":112,"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\/duration":{"patch":{"summary":"Update Project Authentication Duration","operationId":"projectsUpdateAuthDuration","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthDuration","weight":109,"cookies":false,"type":"","demo":"projects\/update-auth-duration.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"duration":{"type":"integer","description":"Project session length in seconds. Max length: 31536000 seconds.","default":null,"x-example":0}},"required":["duration"]}}]}},"\/projects\/{projectId}\/auth\/limit":{"patch":{"summary":"Update Project users limit","operationId":"projectsUpdateAuthLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthLimit","weight":108,"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\/max-sessions":{"patch":{"summary":"Update Project user sessions limit","operationId":"projectsUpdateAuthSessionsLimit","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Project","schema":{"$ref":"#\/definitions\/project"}}},"x-appwrite":{"method":"updateAuthSessionsLimit","weight":111,"cookies":false,"type":"","demo":"projects\/update-auth-sessions-limit.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"projectId","description":"Project unique ID.","required":true,"type":"string","x-example":"[PROJECT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"limit":{"type":"integer","description":"Set the max number of users allowed in this project. Value allowed is between 1-100. Default is 10","default":null,"x-example":1}},"required":["limit"]}}]}},"\/projects\/{projectId}\/auth\/{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":110,"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":130,"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":129,"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":131,"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":133,"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":132,"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":120,"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":119,"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. Maximum of 100 scopes are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":121,"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":122,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"expire":{"type":"string","description":"Expiration time in ISO 8601 format. Use null for unlimited expiration.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"}},"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":123,"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":107,"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":null,"x-example":"[APP_ID]"},"secret":{"type":"string","description":"Provider secret key. Max length: 512 chars.","default":null,"x-example":"[SECRET]"},"enabled":{"type":"boolean","description":"Provider status. Set to 'false' to disable new session creation.","default":null,"x-example":false}},"required":["provider"]}}]}},"\/projects\/{projectId}\/platforms":{"get":{"summary":"List Platforms","operationId":"projectsListPlatforms","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platforms List","schema":{"$ref":"#\/definitions\/platformList"}}},"x-appwrite":{"method":"listPlatforms","weight":125,"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":124,"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":null}},"required":["type","name"]}}]}},"\/projects\/{projectId}\/platforms\/{platformId}":{"get":{"summary":"Get Platform","operationId":"projectsGetPlatform","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Platform","schema":{"$ref":"#\/definitions\/platform"}}},"x-appwrite":{"method":"getPlatform","weight":126,"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":127,"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":null}},"required":["name"]}}]},"delete":{"summary":"Delete Platform","operationId":"projectsDeletePlatform","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deletePlatform","weight":128,"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":106,"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":104,"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":114,"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":113,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}":{"get":{"summary":"Get Webhook","operationId":"projectsGetWebhook","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"getWebhook","weight":115,"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":116,"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. Maximum of 100 events are allowed.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"Webhook URL.","default":null,"x-example":"https:\/\/example.com"},"security":{"type":"boolean","description":"Certificate verification, false for disabled or true for enabled.","default":null,"x-example":false},"httpUser":{"type":"string","description":"Webhook HTTP user. Max length: 256 chars.","default":"","x-example":"[HTTP_USER]"},"httpPass":{"type":"string","description":"Webhook HTTP password. Max length: 256 chars.","default":"","x-example":"[HTTP_PASS]"}},"required":["name","events","url","security"]}}]},"delete":{"summary":"Delete Webhook","operationId":"projectsDeleteWebhook","consumes":["application\/json"],"produces":[],"tags":["projects"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteWebhook","weight":118,"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"}]}},"\/projects\/{projectId}\/webhooks\/{webhookId}\/signature":{"patch":{"summary":"Update Webhook Signature Key","operationId":"projectsUpdateWebhookSignature","consumes":["application\/json"],"produces":["application\/json"],"tags":["projects"],"description":"","responses":{"200":{"description":"Webhook","schema":{"$ref":"#\/definitions\/webhook"}}},"x-appwrite":{"method":"updateWebhookSignature","weight":117,"cookies":false,"type":"","demo":"projects\/update-webhook-signature.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"projects.write","platforms":["console"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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":147,"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":148,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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}\/logs":{"get":{"summary":"List Team Logs","operationId":"teamsListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get the team activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":160,"cookies":false,"type":"","demo":"teams\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/get-team-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["console"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/teams\/{teamId}\/memberships":{"get":{"summary":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":187,"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"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"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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 European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"project":{"description":"Project","type":"object","properties":{"$id":{"type":"string","description":"Project ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Project creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Project update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Project name.","x-example":"New Project"},"description":{"type":"string","description":"Project description.","x-example":"This is a new project."},"teamId":{"type":"string","description":"Project team ID.","x-example":"1592981250"},"logo":{"type":"string","description":"Project logo file ID.","x-example":"5f5c451b403cb"},"url":{"type":"string","description":"Project website URL.","x-example":"5f5c451b403cb"},"legalName":{"type":"string","description":"Company legal name.","x-example":"Company LTD."},"legalCountry":{"type":"string","description":"Country code in [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) two-character format.","x-example":"US"},"legalState":{"type":"string","description":"State name.","x-example":"New York"},"legalCity":{"type":"string","description":"City name.","x-example":"New York City."},"legalAddress":{"type":"string","description":"Company Address.","x-example":"620 Eighth Avenue, New York, NY 10018"},"legalTaxId":{"type":"string","description":"Company Tax ID.","x-example":"131102020"},"authDuration":{"type":"integer","description":"Session duration in seconds.","x-example":60,"format":"int32"},"authLimit":{"type":"integer","description":"Max users allowed. 0 is unlimited.","x-example":100,"format":"int32"},"authSessionsLimit":{"type":"integer","description":"Max sessions allowed per user. 100 maximum.","x-example":10,"format":"int32"},"providers":{"type":"array","description":"List of Providers.","items":{"type":"object","$ref":"#\/definitions\/provider"},"x-example":{}},"platforms":{"type":"array","description":"List of Platforms.","items":{"type":"object","$ref":"#\/definitions\/platform"},"x-example":{}},"webhooks":{"type":"array","description":"List of Webhooks.","items":{"type":"object","$ref":"#\/definitions\/webhook"},"x-example":{}},"keys":{"type":"array","description":"List of API Keys.","items":{"type":"object","$ref":"#\/definitions\/key"},"x-example":{}},"domains":{"type":"array","description":"List of Domains.","items":{"type":"object","$ref":"#\/definitions\/domain"},"x-example":{}},"authEmailPassword":{"type":"boolean","description":"Email\/Password auth method status","x-example":true},"authUsersAuthMagicURL":{"type":"boolean","description":"Magic URL auth method status","x-example":true},"authAnonymous":{"type":"boolean","description":"Anonymous auth method status","x-example":true},"authInvites":{"type":"boolean","description":"Invites auth method status","x-example":true},"authJWT":{"type":"boolean","description":"JWT auth method status","x-example":true},"authPhone":{"type":"boolean","description":"Phone auth method status","x-example":true},"serviceStatusForAccount":{"type":"boolean","description":"Account service status","x-example":true},"serviceStatusForAvatars":{"type":"boolean","description":"Avatars service status","x-example":true},"serviceStatusForDatabases":{"type":"boolean","description":"Databases service status","x-example":true},"serviceStatusForLocale":{"type":"boolean","description":"Locale service status","x-example":true},"serviceStatusForHealth":{"type":"boolean","description":"Health service status","x-example":true},"serviceStatusForStorage":{"type":"boolean","description":"Storage service status","x-example":true},"serviceStatusForTeams":{"type":"boolean","description":"Teams service status","x-example":true},"serviceStatusForUsers":{"type":"boolean","description":"Users service status","x-example":true},"serviceStatusForFunctions":{"type":"boolean","description":"Functions service status","x-example":true},"serviceStatusForGraphql":{"type":"boolean","description":"GraphQL service status","x-example":true}},"required":["$id","$createdAt","$updatedAt","name","description","teamId","logo","url","legalName","legalCountry","legalState","legalCity","legalAddress","legalTaxId","authDuration","authLimit","authSessionsLimit","providers","platforms","webhooks","keys","domains","authEmailPassword","authUsersAuthMagicURL","authAnonymous","authInvites","authJWT","authPhone","serviceStatusForAccount","serviceStatusForAvatars","serviceStatusForDatabases","serviceStatusForLocale","serviceStatusForHealth","serviceStatusForStorage","serviceStatusForTeams","serviceStatusForUsers","serviceStatusForFunctions","serviceStatusForGraphql"]},"webhook":{"description":"Webhook","type":"object","properties":{"$id":{"type":"string","description":"Webhook ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Webhook creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Webhook update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Webhook name.","x-example":"My Webhook"},"url":{"type":"string","description":"Webhook URL endpoint.","x-example":"https:\/\/example.com\/webhook"},"events":{"type":"array","description":"Webhook trigger events.","items":{"type":"string"},"x-example":"database.collections.update"},"security":{"type":"boolean","description":"Indicated if SSL \/ TLS Certificate verification is enabled.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"},"signatureKey":{"type":"string","description":"Signature key which can be used to validated incoming","x-example":"ad3d581ca230e2b7059c545e5a"}},"required":["$id","$createdAt","$updatedAt","name","url","events","security","httpUser","httpPass","signatureKey"]},"key":{"description":"Key","type":"object","properties":{"$id":{"type":"string","description":"Key ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Key creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Key update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Key name.","x-example":"My API Key"},"expire":{"type":"string","description":"Key expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"scopes":{"type":"array","description":"Allowed permission scopes.","items":{"type":"string"},"x-example":"users.read"},"secret":{"type":"string","description":"Secret key.","x-example":"919c2d18fb5d4...a2ae413da83346ad2"},"accessedAt":{"type":"string","description":"Most recent access date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"sdks":{"type":"array","description":"List of SDK user agents that used this key.","items":{"type":"string"},"x-example":"appwrite:flutter"}},"required":["$id","$createdAt","$updatedAt","name","expire","scopes","secret","accessedAt","sdks"]},"domain":{"description":"Domain","type":"object","properties":{"$id":{"type":"string","description":"Domain ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Domain creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Domain update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"domain":{"type":"string","description":"Domain name.","x-example":"appwrite.company.com"},"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","$createdAt","$updatedAt","domain","registerable","tld","verification","certificateId"]},"provider":{"description":"Provider","type":"object","properties":{"name":{"type":"string","description":"Provider name.","x-example":"GitHub"},"appId":{"type":"string","description":"OAuth 2.0 application ID.","x-example":"259125845563242502"},"secret":{"type":"string","description":"OAuth 2.0 application secret. Might be JSON string if provider requires extra configuration.","x-example":"Bpw_g9c2TGXxfgLshDbSaL8tsCcqgczQ"},"enabled":{"type":"boolean","description":"Provider is active and can be used to create session.","x-example":""}},"required":["name","appId","secret","enabled"]},"platform":{"description":"Platform","type":"object","properties":{"$id":{"type":"string","description":"Platform ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Platform creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Platform update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Platform name.","x-example":"My Web App"},"type":{"type":"string","description":"Platform type. Possible values are: web, flutter-web, flutter-ios, flutter-android, ios, android, and unity.","x-example":"web"},"key":{"type":"string","description":"Platform Key. iOS bundle ID or Android package name. Empty string for other platforms.","x-example":"com.company.appname"},"store":{"type":"string","description":"App store or Google Play store ID.","x-example":""},"hostname":{"type":"string","description":"Web app hostname. Empty string for other platforms.","x-example":true},"httpUser":{"type":"string","description":"HTTP basic authentication username.","x-example":"username"},"httpPass":{"type":"string","description":"HTTP basic authentication password.","x-example":"password"}},"required":["$id","$createdAt","$updatedAt","name","type","key","store","hostname","httpUser","httpPass"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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"]},"metric":{"description":"Metric","type":"object","properties":{"value":{"type":"integer","description":"The value of this metric at the timestamp.","x-example":1,"format":"int32"},"date":{"type":"string","description":"The date at which this metric was aggregated in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["value","date"]},"usageDatabases":{"description":"UsageDatabases","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"databasesCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databasesDelete":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","databasesCount","documentsCount","collectionsCount","databasesCreate","databasesRead","databasesUpdate","databasesDelete","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageDatabase":{"description":"UsageDatabase","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCount":{"type":"array","description":"Aggregated stats for total number of collections.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsCreate":{"type":"array","description":"Aggregated stats for collections created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsRead":{"type":"array","description":"Aggregated stats for collections read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsUpdate":{"type":"array","description":"Aggregated stats for collections updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"collectionsDelete":{"type":"array","description":"Aggregated stats for collections delete.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","collectionsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete","collectionsCreate","collectionsRead","collectionsUpdate","collectionsDelete"]},"usageCollection":{"description":"UsageCollection","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"documentsCount":{"type":"array","description":"Aggregated stats for total number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsCreate":{"type":"array","description":"Aggregated stats for documents created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsRead":{"type":"array","description":"Aggregated stats for documents read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsUpdate":{"type":"array","description":"Aggregated stats for documents updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documentsDelete":{"type":"array","description":"Aggregated stats for documents deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","documentsCount","documentsCreate","documentsRead","documentsUpdate","documentsDelete"]},"usageUsers":{"description":"UsageUsers","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"usersCount":{"type":"array","description":"Aggregated stats for total number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersCreate":{"type":"array","description":"Aggregated stats for users created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersRead":{"type":"array","description":"Aggregated stats for users read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersUpdate":{"type":"array","description":"Aggregated stats for users updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"usersDelete":{"type":"array","description":"Aggregated stats for users deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsCreate":{"type":"array","description":"Aggregated stats for sessions created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsProviderCreate":{"type":"array","description":"Aggregated stats for sessions created for a provider ( email, anonymous or oauth2 ).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"sessionsDelete":{"type":"array","description":"Aggregated stats for sessions deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","usersCount","usersCreate","usersRead","usersUpdate","usersDelete","sessionsCreate","sessionsProviderCreate","sessionsDelete"]},"usageStorage":{"description":"StorageUsage","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCount":{"type":"array","description":"Aggregated stats for total number of files.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCount":{"type":"array","description":"Aggregated stats for total number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsCreate":{"type":"array","description":"Aggregated stats for buckets created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsRead":{"type":"array","description":"Aggregated stats for buckets read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsUpdate":{"type":"array","description":"Aggregated stats for buckets updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"bucketsDelete":{"type":"array","description":"Aggregated stats for buckets deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","storage","filesCount","bucketsCount","bucketsCreate","bucketsRead","bucketsUpdate","bucketsDelete","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageBuckets":{"description":"UsageBuckets","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"filesCount":{"type":"array","description":"Aggregated stats for total number of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesStorage":{"type":"array","description":"Aggregated stats for total storage of files in this bucket.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesCreate":{"type":"array","description":"Aggregated stats for files created.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesRead":{"type":"array","description":"Aggregated stats for files read.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesUpdate":{"type":"array","description":"Aggregated stats for files updated.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"filesDelete":{"type":"array","description":"Aggregated stats for files deleted.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","filesCount","filesStorage","filesCreate","filesRead","filesUpdate","filesDelete"]},"usageFunctions":{"description":"UsageFunctions","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"executionsTotal":{"type":"array","description":"Aggregated stats for number of function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsFailure":{"type":"array","description":"Aggregated stats for function execution failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsSuccess":{"type":"array","description":"Aggregated stats for function execution successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executionsTime":{"type":"array","description":"Aggregated stats for function execution duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTotal":{"type":"array","description":"Aggregated stats for number of function builds.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsFailure":{"type":"array","description":"Aggregated stats for function build failures.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsSuccess":{"type":"array","description":"Aggregated stats for function build successes.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buildsTime":{"type":"array","description":"Aggregated stats for function build duration.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","executionsTotal","executionsFailure","executionsSuccess","executionsTime","buildsTotal","buildsFailure","buildsSuccess","buildsTime"]},"usageProject":{"description":"UsageProject","type":"object","properties":{"range":{"type":"string","description":"The time range of the usage stats.","x-example":"30d"},"requests":{"type":"array","description":"Aggregated stats for number of requests.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"network":{"type":"array","description":"Aggregated stats for consumed bandwidth.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"executions":{"type":"array","description":"Aggregated stats for function executions.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"documents":{"type":"array","description":"Aggregated stats for number of documents.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"databases":{"type":"array","description":"Aggregated stats for number of databases.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"users":{"type":"array","description":"Aggregated stats for number of users.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"storage":{"type":"array","description":"Aggregated stats for the occupied storage size (in bytes).","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]},"buckets":{"type":"array","description":"Aggregated stats for number of buckets.","items":{"type":"object","$ref":"#\/definitions\/metric"},"x-example":[]}},"required":["range","requests","network","executions","documents","databases","users","storage","buckets"]}},"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 0aac07c4e8..3b33a88517 100644 --- a/app/config/specs/swagger2-latest-server.json +++ b/app/config/specs/swagger2-latest-server.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"version":"1.2.0","title":"Appwrite","description":"Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https:\/\/appwrite.io\/docs](https:\/\/appwrite.io\/docs)","termsOfService":"https:\/\/appwrite.io\/policy\/terms","contact":{"name":"Appwrite Team","url":"https:\/\/appwrite.io\/support","email":"team@appwrite.io"},"license":{"name":"BSD-3-Clause","url":"https:\/\/raw.githubusercontent.com\/appwrite\/appwrite\/master\/LICENSE"}},"host":"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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permission are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose your own unique ID or pass the string `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"get":{"summary":"GraphQL Endpoint","operationId":"graphqlGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL query.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"get","weight":237,"cookies":false,"type":"","demo":"graphql\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/get.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"query","description":"The query to execute.","required":true,"type":"string","x-example":"[QUERY]","in":"query"},{"name":"operationName","description":"The name of the operation to execute.","required":false,"type":"string","x-example":"[OPERATION_NAME]","default":"","in":"query"},{"name":"variables","description":"The JSON encoded variables to use in the query.","required":false,"type":"string","x-example":"[VARIABLES]","default":"","in":"query"}]},"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","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":"permissions","description":"An array of permission strings. By default the current user is granted with all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"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 `ID.unique()` to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":1592981237,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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":"1.2.1","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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"get","weight":18,"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":[]}]}},"\/account\/email":{"patch":{"summary":"Update Email","operationId":"accountUpdateEmail","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account email address. After changing user address, the user confirmation status will get reset. A new confirmation email is not sent automatically however you can use the send confirmation email endpoint again to send the confirmation email. For security measures, user password is required to complete this request.\nThis endpoint can also be used to convert an anonymous account to a normal one, by passing an email address and a new password.\n","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateEmail","weight":25,"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":"List Logs","operationId":"accountListLogs","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":"listLogs","weight":21,"cookies":false,"type":"","demo":"account\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/account\/name":{"patch":{"summary":"Update Name","operationId":"accountUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user account name.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateName","weight":23,"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 Password","operationId":"accountUpdatePassword","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update currently logged in user password. For validation, user is required to pass in the new password, and the old password. For users created with OAuth, Team Invites and Magic URL, oldPassword is optional.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePassword","weight":24,"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\/phone":{"patch":{"summary":"Update Phone","operationId":"accountUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Update the currently logged in user's phone number. After updating the phone number, the phone verification status will be reset. A confirmation SMS is not sent automatically, however you can use the [POST \/account\/verification\/phone](\/docs\/client\/account#accountCreatePhoneVerification) endpoint to send a confirmation SMS.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePhone","weight":26,"cookies":false,"type":"","demo":"account\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"User password. Must be at least 8 chars.","default":null,"x-example":"password"}},"required":["phone","password"]}}]}},"\/account\/prefs":{"get":{"summary":"Get Account Preferences","operationId":"accountGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Get currently logged in user preferences as a key-value object.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":19,"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 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":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updatePrefs","weight":27,"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":32,"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":33,"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":"List Sessions","operationId":"accountListSessions","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":"listSessions","weight":20,"cookies":false,"type":"","demo":"account\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/list-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"delete":{"summary":"Delete Sessions","operationId":"accountDeleteSessions","consumes":["application\/json"],"produces":[],"tags":["account"],"description":"Delete all sessions from the user account and remove any sessions cookies from the end client.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteSessions","weight":31,"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","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":22,"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 OAuth Session (Refresh Tokens)","operationId":"accountUpdateSession","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Access tokens have limited lifespan and expire to mitigate security risks. If session was created using an OAuth provider, this route can be used to \"refresh\" the access token.","responses":{"200":{"description":"Session","schema":{"$ref":"#\/definitions\/session"}}},"x-appwrite":{"method":"updateSession","weight":30,"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 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":29,"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\/status":{"patch":{"summary":"Update Status","operationId":"accountUpdateStatus","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.","responses":{"200":{"description":"Account","schema":{"$ref":"#\/definitions\/account"}}},"x-appwrite":{"method":"updateStatus","weight":28,"cookies":false,"type":"","demo":"account\/update-status.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-status.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]}},"\/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#accountUpdateEmailVerification). 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":34,"cookies":false,"type":"","demo":"account\/create-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{userId}","scope":"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":35,"cookies":false,"type":"","demo":"account\/update-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-email-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"url:{url},userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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"]}}]}},"\/account\/verification\/phone":{"post":{"summary":"Create Phone Verification","operationId":"accountCreatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](\/docs\/client\/account#accountUpdatePhone) endpoint. Learn more about how to [complete the verification process](\/docs\/client\/account#accountUpdatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.","responses":{"201":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"createPhoneVerification","weight":36,"cookies":false,"type":"","demo":"account\/create-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/create-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{userId}","scope":"account","platforms":["client","server"],"packaging":false,"auth":{"Project":[],"JWT":[]}},"security":[{"Project":[],"JWT":[]}]},"put":{"summary":"Create Phone Verification (confirmation)","operationId":"accountUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["account"],"description":"Use this endpoint to complete the user phone verification process. Use the **userId** and **secret** that were sent to your user's phone number to verify the user email ownership. If confirmed this route will return a 200 status code.","responses":{"200":{"description":"Token","schema":{"$ref":"#\/definitions\/token"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":37,"cookies":false,"type":"","demo":"account\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/account\/update-phone-verification.md","rate-limit":10,"rate-time":3600,"rate-key":"userId:{param-userId}","scope":"public","platforms":["client","server"],"packaging":false,"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 [GET \/account\/sessions](\/docs\/client\/account#accountGetSessions) endpoint. Use width, height and quality arguments to change the output settings.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getBrowser","weight":39,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getCreditCard","weight":38,"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":42,"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. Country codes follow the [ISO 3166-1](http:\/\/en.wikipedia.org\/wiki\/ISO_3166-1) standard.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getFlag","weight":40,"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.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 400x400px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getImage","weight":41,"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. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"},{"name":"height","description":"Resize preview image height, Pass an integer between 0 to 2000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":0,"default":400,"in":"query"}]}},"\/avatars\/initials":{"get":{"summary":"Get User Initials","operationId":"avatarsGetInitials","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Use this endpoint to show your user initials avatar icon on your website or app. By default, this route will try to print your logged-in user name or email initials. You can also overwrite the user name if you pass the 'name' parameter. If no name is given and no user is logged, an empty avatar will be returned.\n\nYou can use the color and background params to change the avatar colors. By default, a random theme will be selected. The random theme will persist for the user's initials when reloading the same theme will always return for the same initials.\n\nWhen one dimension is specified and the other is 0, the image is scaled with preserved aspect ratio. If both dimensions are 0, the API provides an image at source quality. If dimensions are not specified, the default size of image returned is 100x100px.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getInitials","weight":44,"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":"background","description":"Changes background color. By default a random color will be picked and stay will persistent to the given name.","required":false,"type":"string","default":"","in":"query"}]}},"\/avatars\/qr":{"get":{"summary":"Get QR Code","operationId":"avatarsGetQR","consumes":["application\/json"],"produces":["image\/png"],"tags":["avatars"],"description":"Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.\n","responses":{"200":{"description":"Image","schema":{"type":"file"}}},"x-appwrite":{"method":"getQR","weight":43,"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 1 to 1000. Defaults to 400.","required":false,"type":"integer","format":"int32","x-example":1,"default":400,"in":"query"},{"name":"margin","description":"Margin from edge. Pass an integer between 0 to 10. Defaults to 1.","required":false,"type":"integer","format":"int32","x-example":0,"default":1,"in":"query"},{"name":"download","description":"Return resulting image with 'Content-Disposition: attachment ' headers for the browser to start downloading it. Pass 0 for no header, or 1 for otherwise. Default value is set to 0.","required":false,"type":"boolean","x-example":false,"default":false,"in":"query"}]}},"\/databases":{"get":{"summary":"List Databases","operationId":"databasesList","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results.","responses":{"200":{"description":"Databases List","schema":{"$ref":"#\/definitions\/databaseList"}}},"x-appwrite":{"method":"list","weight":46,"cookies":false,"type":"","demo":"databases\/list.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Database","operationId":"databasesCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Database.\n","responses":{"201":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"create","weight":45,"cookies":false,"type":"","demo":"databases\/create.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"databaseId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DATABASE_ID]","x-global":true},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["databaseId","name"]}}]}},"\/databases\/{databaseId}":{"get":{"summary":"Get Database","operationId":"databasesGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"get","weight":47,"cookies":false,"type":"","demo":"databases\/get.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]},"put":{"summary":"Update Database","operationId":"databasesUpdate","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a database by its unique ID.","responses":{"200":{"description":"Database","schema":{"$ref":"#\/definitions\/database"}}},"x-appwrite":{"method":"update","weight":49,"cookies":false,"type":"","demo":"databases\/update.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Database name. Max length: 128 chars.","default":null,"x-example":"[NAME]"}},"required":["name"]}}]},"delete":{"summary":"Delete Database","operationId":"databasesDelete","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":50,"cookies":false,"type":"","demo":"databases\/delete.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"databases.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections":{"get":{"summary":"List Collections","operationId":"databasesListCollections","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results.","responses":{"200":{"description":"Collections List","schema":{"$ref":"#\/definitions\/collectionList"}}},"x-appwrite":{"method":"listCollections","weight":52,"cookies":false,"type":"","demo":"databases\/list-collections.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-collections.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, documentSecurity","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Collection","operationId":"databasesCreateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"createCollection","weight":51,"cookies":false,"type":"","demo":"databases\/create-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"collectionId":{"type":"string","description":"Unique Id. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[COLLECTION_ID]"},"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permissions strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false}},"required":["collectionId","name"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}":{"get":{"summary":"Get Collection","operationId":"databasesGetCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"getCollection","weight":53,"cookies":false,"type":"","demo":"databases\/get-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"put":{"summary":"Update Collection","operationId":"databasesUpdateCollection","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a collection by its unique ID.","responses":{"200":{"description":"Collection","schema":{"$ref":"#\/definitions\/collection"}}},"x-appwrite":{"method":"updateCollection","weight":55,"cookies":false,"type":"","demo":"databases\/update-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"name":{"type":"string","description":"Collection name. Max length: 128 chars.","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"documentSecurity":{"type":"boolean","description":"Enables configuring permissions for individual documents. A user needs one of document or collection level permissions to access a document. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"enabled":{"type":"boolean","description":"Is collection enabled?","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Collection","operationId":"databasesDeleteCollection","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteCollection","weight":56,"cookies":false,"type":"","demo":"databases\/delete-collection.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-collection.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes":{"get":{"summary":"List Attributes","operationId":"databasesListAttributes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Attributes List","schema":{"$ref":"#\/definitions\/attributeList"}}},"x-appwrite":{"method":"listAttributes","weight":66,"cookies":false,"type":"","demo":"databases\/list-attributes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-attributes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/boolean":{"post":{"summary":"Create Boolean Attribute","operationId":"databasesCreateBooleanAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a boolean attribute.\n","responses":{"202":{"description":"AttributeBoolean","schema":{"$ref":"#\/definitions\/attributeBoolean"}}},"x-appwrite":{"method":"createBooleanAttribute","weight":64,"cookies":false,"type":"","demo":"databases\/create-boolean-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-boolean-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"boolean","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":false},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/datetime":{"post":{"summary":"Create DateTime Attribute","operationId":"databasesCreateDatetimeAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeDatetime","schema":{"$ref":"#\/definitions\/attributeDatetime"}}},"x-appwrite":{"method":"createDatetimeAttribute","weight":65,"cookies":false,"type":"","demo":"databases\/create-datetime-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-datetime-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for the attribute in ISO 8601 format. Cannot be set when attribute is required.","default":null,"x-example":"2020-10-15T06:38:00.000+00:00"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/email":{"post":{"summary":"Create Email Attribute","operationId":"databasesCreateEmailAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an email attribute.\n","responses":{"202":{"description":"AttributeEmail","schema":{"$ref":"#\/definitions\/attributeEmail"}}},"x-appwrite":{"method":"createEmailAttribute","weight":58,"cookies":false,"type":"","demo":"databases\/create-email-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-email-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"email@example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/enum":{"post":{"summary":"Create Enum Attribute","operationId":"databasesCreateEnumAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"AttributeEnum","schema":{"$ref":"#\/definitions\/attributeEnum"}}},"x-appwrite":{"method":"createEnumAttribute","weight":59,"cookies":false,"type":"","demo":"databases\/create-enum-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-attribute-enum.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"elements":{"type":"array","description":"Array of elements in enumerated type. Uses length of longest element to determine size. Maximum of 100 elements are allowed, each 4096 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","elements","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/float":{"post":{"summary":"Create Float Attribute","operationId":"databasesCreateFloatAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a float attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeFloat","schema":{"$ref":"#\/definitions\/attributeFloat"}}},"x-appwrite":{"method":"createFloatAttribute","weight":63,"cookies":false,"type":"","demo":"databases\/create-float-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-float-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"number","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"number","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"number","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/integer":{"post":{"summary":"Create Integer Attribute","operationId":"databasesCreateIntegerAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create an integer attribute. Optionally, minimum and maximum values can be provided.\n","responses":{"202":{"description":"AttributeInteger","schema":{"$ref":"#\/definitions\/attributeInteger"}}},"x-appwrite":{"method":"createIntegerAttribute","weight":62,"cookies":false,"type":"","demo":"databases\/create-integer-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-integer-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"min":{"type":"integer","description":"Minimum value to enforce on new documents","default":null,"x-example":null},"max":{"type":"integer","description":"Maximum value to enforce on new documents","default":null,"x-example":null},"default":{"type":"integer","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/ip":{"post":{"summary":"Create IP Address Attribute","operationId":"databasesCreateIpAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create IP address attribute.\n","responses":{"202":{"description":"AttributeIP","schema":{"$ref":"#\/definitions\/attributeIp"}}},"x-appwrite":{"method":"createIpAttribute","weight":60,"cookies":false,"type":"","demo":"databases\/create-ip-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-ip-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":null},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/string":{"post":{"summary":"Create String Attribute","operationId":"databasesCreateStringAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a string attribute.\n","responses":{"202":{"description":"AttributeString","schema":{"$ref":"#\/definitions\/attributeString"}}},"x-appwrite":{"method":"createStringAttribute","weight":57,"cookies":false,"type":"","demo":"databases\/create-string-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-string-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"size":{"type":"integer","description":"Attribute size for text attributes, in number of characters.","default":null,"x-example":1},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"[DEFAULT]"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","size","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/url":{"post":{"summary":"Create URL Attribute","operationId":"databasesCreateUrlAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a URL attribute.\n","responses":{"202":{"description":"AttributeURL","schema":{"$ref":"#\/definitions\/attributeUrl"}}},"x-appwrite":{"method":"createUrlAttribute","weight":61,"cookies":false,"type":"","demo":"databases\/create-url-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-url-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","default":null,"x-example":null},"required":{"type":"boolean","description":"Is attribute required?","default":null,"x-example":false},"default":{"type":"string","description":"Default value for attribute when not provided. Cannot be set when attribute is required.","default":null,"x-example":"https:\/\/example.com"},"array":{"type":"boolean","description":"Is attribute an array?","default":false,"x-example":false}},"required":["key","required"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/attributes\/{key}":{"get":{"summary":"Get Attribute","operationId":"databasesGetAttribute","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"AttributeDatetime, or AttributeBoolean, or AttributeInteger, or AttributeFloat, or AttributeEmail, or AttributeEnum, or AttributeURL, or AttributeIP, or AttributeDatetime, or AttributeString","schema":{"x-oneOf":[{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]}}},"x-appwrite":{"method":"getAttribute","weight":67,"cookies":false,"type":"","demo":"databases\/get-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Attribute","operationId":"databasesDeleteAttribute","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteAttribute","weight":68,"cookies":false,"type":"","demo":"databases\/delete-attribute.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-attribute.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Attribute Key.","required":true,"type":"string","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents":{"get":{"summary":"List Documents","operationId":"databasesListDocuments","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a list of all the user's documents in a given collection. You can use the query params to filter your results.","responses":{"200":{"description":"Documents List","schema":{"$ref":"#\/definitions\/documentList"}}},"x-appwrite":{"method":"listDocuments","weight":74,"cookies":false,"type":"","demo":"databases\/list-documents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-documents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long.","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]},"post":{"summary":"Create Document","operationId":"databasesCreateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](\/docs\/server\/databases#databasesCreateCollection) API or directly from your database console.","responses":{"201":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"createDocument","weight":73,"cookies":false,"type":"","demo":"databases\/create-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection). Make sure to define attributes before creating documents.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"documentId":{"type":"string","description":"Document ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[DOCUMENT_ID]"},"data":{"type":"object","description":"Document data as JSON object.","default":{},"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}},"required":["documentId","data"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/documents\/{documentId}":{"get":{"summary":"Get Document","operationId":"databasesGetDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Get a document by its unique ID. This endpoint response returns a JSON object with the document data.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"getDocument","weight":75,"cookies":false,"type":"","demo":"databases\/get-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-document.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"documents.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]},"patch":{"summary":"Update Document","operationId":"databasesUpdateDocument","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated.","responses":{"200":{"description":"Document","schema":{"$ref":"#\/definitions\/document"}}},"x-appwrite":{"method":"updateDocument","weight":77,"cookies":false,"type":"","demo":"databases\/update-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/update-document.md","rate-limit":120,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID.","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"data":{"type":"object","description":"Document data as JSON object. Include only attribute and value pairs to be updated.","default":[],"x-example":"{}"},"permissions":{"type":"array","description":"An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete Document","operationId":"databasesDeleteDocument","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"Delete a document by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteDocument","weight":78,"cookies":false,"type":"","demo":"databases\/delete-document.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-document.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"documents.write","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"documentId","description":"Document ID.","required":true,"type":"string","x-example":"[DOCUMENT_ID]","in":"path"}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes":{"get":{"summary":"List Indexes","operationId":"databasesListIndexes","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Indexes List","schema":{"$ref":"#\/definitions\/indexList"}}},"x-appwrite":{"method":"listIndexes","weight":70,"cookies":false,"type":"","demo":"databases\/list-indexes.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/list-indexes.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"}]},"post":{"summary":"Create Index","operationId":"databasesCreateIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"202":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"createIndex","weight":69,"cookies":false,"type":"","demo":"databases\/create-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/create-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Index Key.","default":null,"x-example":null},"type":{"type":"string","description":"Index type.","default":null,"x-example":"key"},"attributes":{"type":"array","description":"Array of attributes to index. Maximum of 100 attributes are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"orders":{"type":"array","description":"Array of index orders. Maximum of 100 orders are allowed.","default":[],"x-example":null,"items":{"type":"string"}}},"required":["key","type","attributes"]}}]}},"\/databases\/{databaseId}\/collections\/{collectionId}\/indexes\/{key}":{"get":{"summary":"Get Index","operationId":"databasesGetIndex","consumes":["application\/json"],"produces":["application\/json"],"tags":["databases"],"description":"","responses":{"200":{"description":"Index","schema":{"$ref":"#\/definitions\/index"}}},"x-appwrite":{"method":"getIndex","weight":71,"cookies":false,"type":"","demo":"databases\/get-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/get-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]},"delete":{"summary":"Delete Index","operationId":"databasesDeleteIndex","consumes":["application\/json"],"produces":[],"tags":["databases"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteIndex","weight":72,"cookies":false,"type":"","demo":"databases\/delete-index.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/databases\/delete-index.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"collections.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"databaseId","description":"Database ID.","required":true,"x-global":true,"type":"string","x-example":"[DATABASE_ID]","in":"path"},{"name":"collectionId","description":"Collection ID. You can create a new collection using the Database service [server integration](https:\/\/appwrite.io\/docs\/server\/databases#databasesCreateCollection).","required":true,"type":"string","x-example":"[COLLECTION_ID]","in":"path"},{"name":"key","description":"Index Key.","required":true,"type":"string","in":"path"}]}},"\/functions":{"get":{"summary":"List Functions","operationId":"functionsList","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the project's functions. You can use the query params to filter your results.","responses":{"200":{"description":"Functions List","schema":{"$ref":"#\/definitions\/functionList"}}},"x-appwrite":{"method":"list","weight":189,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, enabled, runtime, deployment, schedule, scheduleNext, schedulePrevious, timeout","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Function","operationId":"functionsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function. You can pass a list of [permissions](\/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":188,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"runtime":{"type":"string","description":"Execution runtime.","default":null,"x-example":"node-14.5"},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Function maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"required":["functionId","name","execute","runtime"]}}]}},"\/functions\/runtimes":{"get":{"summary":"List runtimes","operationId":"functionsListRuntimes","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all runtimes that are currently active on your instance.","responses":{"200":{"description":"Runtimes List","schema":{"$ref":"#\/definitions\/runtimeList"}}},"x-appwrite":{"method":"listRuntimes","weight":190,"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":191,"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":194,"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 roles. By default no user is granted with any execute permissions. [learn more about permissions](https:\/\/appwrite.io\/docs\/permissions). Maximum of 100 roles are allowed, each 64 characters long.","default":null,"x-example":"[\"any\"]","items":{"type":"string"}},"events":{"type":"array","description":"Events list. Maximum of 100 events are allowed.","default":[],"x-example":null,"items":{"type":"string"}},"schedule":{"type":"string","description":"Schedule CRON syntax.","default":"","x-example":null},"timeout":{"type":"integer","description":"Maximum execution time in seconds.","default":15,"x-example":1},"enabled":{"type":"boolean","description":"Is function enabled?","default":true,"x-example":false}},"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":196,"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":198,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: entrypoint, size, buildId, activate","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Deployment","operationId":"functionsCreateDeployment","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function code deployment. Use this endpoint to upload a new version of your code function. To execute your newly uploaded code, you'll need to update the function's deployment to use your new deployment UID.\n\nThis endpoint accepts a tar.gz file compressed with your code. Make sure to include any dependencies your code has within the compressed file. You can learn more about code packaging in the [Appwrite Cloud Functions tutorial](\/docs\/functions).\n\nUse the \"command\" param to set the entry point used to execute your code.","responses":{"202":{"description":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"createDeployment","weight":197,"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":"Deployment","schema":{"$ref":"#\/definitions\/deployment"}}},"x-appwrite":{"method":"getDeployment","weight":199,"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":195,"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":200,"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":"Create Build","operationId":"functionsCreateBuild","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"createBuild","weight":201,"cookies":false,"type":"","demo":"functions\/create-build.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-build.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"deploymentId","description":"Deployment ID.","required":true,"type":"string","x-example":"[DEPLOYMENT_ID]","in":"path"},{"name":"buildId","description":"Build unique ID.","required":true,"type":"string","x-example":"[BUILD_ID]","in":"path"}]}},"\/functions\/{functionId}\/executions":{"get":{"summary":"List Executions","operationId":"functionsListExecutions","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all the current user function execution logs. You can use the query params to filter your results.","responses":{"200":{"description":"Executions List","schema":{"$ref":"#\/definitions\/executionList"}}},"x-appwrite":{"method":"listExecutions","weight":203,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: trigger, status, statusCode, duration","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Execution","operationId":"functionsCreateExecution","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously.","responses":{"201":{"description":"Execution","schema":{"$ref":"#\/definitions\/execution"}}},"x-appwrite":{"method":"createExecution","weight":202,"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":"ip:{ip},userId:{userId}","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 in the background. Default value is false.","default":false,"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":204,"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"}]}},"\/functions\/{functionId}\/variables":{"get":{"summary":"List Variables","operationId":"functionsListVariables","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a list of all variables of a specific function.","responses":{"200":{"description":"Variables List","schema":{"$ref":"#\/definitions\/variableList"}}},"x-appwrite":{"method":"listVariables","weight":206,"cookies":false,"type":"","demo":"functions\/list-variables.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/list-variables.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"}]},"post":{"summary":"Create Variable","operationId":"functionsCreateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Create a new function variable. These variables can be accessed within function in the `env` object under the request variable.","responses":{"201":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"createVariable","weight":205,"cookies":false,"type":"","demo":"functions\/create-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/create-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key","value"]}}]}},"\/functions\/{functionId}\/variables\/{variableId}":{"get":{"summary":"Get Variable","operationId":"functionsGetVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Get a variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"getVariable","weight":207,"cookies":false,"type":"","demo":"functions\/get-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/get-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]},"put":{"summary":"Update Variable","operationId":"functionsUpdateVariable","consumes":["application\/json"],"produces":["application\/json"],"tags":["functions"],"description":"Update variable by its unique ID.","responses":{"200":{"description":"Variable","schema":{"$ref":"#\/definitions\/variable"}}},"x-appwrite":{"method":"updateVariable","weight":208,"cookies":false,"type":"","demo":"functions\/update-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/update-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"key":{"type":"string","description":"Variable key. Max length: 255 chars.","default":null,"x-example":"[KEY]"},"value":{"type":"string","description":"Variable value. Max length: 8192 chars.","default":null,"x-example":"[VALUE]"}},"required":["key"]}}]},"delete":{"summary":"Delete Variable","operationId":"functionsDeleteVariable","consumes":["application\/json"],"produces":[],"tags":["functions"],"description":"Delete a variable by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteVariable","weight":209,"cookies":false,"type":"","demo":"functions\/delete-variable.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/functions\/delete-variable.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"functions.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"functionId","description":"Function unique ID.","required":true,"type":"string","x-example":"[FUNCTION_ID]","in":"path"},{"name":"variableId","description":"Variable unique ID.","required":true,"type":"string","x-example":"[VARIABLE_ID]","in":"path"}]}},"\/graphql":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlQuery","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"query","weight":239,"cookies":false,"type":"graphql","demo":"graphql\/query.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/graphql\/mutation":{"post":{"summary":"GraphQL Endpoint","operationId":"graphqlMutation","consumes":["application\/json"],"produces":["application\/json"],"tags":["graphql"],"description":"Execute a GraphQL mutation.","responses":{"200":{"description":"Any","schema":{"$ref":"#\/definitions\/any"}}},"x-appwrite":{"method":"mutation","weight":238,"cookies":false,"type":"graphql","demo":"graphql\/mutation.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/graphql\/post.md","rate-limit":60,"rate-time":60,"rate-key":"url:{url},ip:{ip}","scope":"graphql","platforms":["server","client","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"query":{"type":"object","description":"The query or queries to execute.","default":{},"x-example":"{}"}},"required":["query"]}}]}},"\/health":{"get":{"summary":"Get HTTP","operationId":"healthGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["health"],"description":"Check the Appwrite HTTP server is up and responsive.","responses":{"200":{"description":"Health Status","schema":{"$ref":"#\/definitions\/healthStatus"}}},"x-appwrite":{"method":"get","weight":89,"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":99,"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":92,"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":91,"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":96,"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":97,"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":95,"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\/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":94,"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":98,"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":93,"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":82,"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":"localeListContinents","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all continents. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Continents List","schema":{"$ref":"#\/definitions\/continentList"}}},"x-appwrite":{"method":"listContinents","weight":86,"cookies":false,"type":"","demo":"locale\/list-continents.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-continents.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries":{"get":{"summary":"List Countries","operationId":"localeListCountries","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountries","weight":83,"cookies":false,"type":"","demo":"locale\/list-countries.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/eu":{"get":{"summary":"List EU Countries","operationId":"localeListCountriesEU","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Countries List","schema":{"$ref":"#\/definitions\/countryList"}}},"x-appwrite":{"method":"listCountriesEU","weight":84,"cookies":false,"type":"","demo":"locale\/list-countries-e-u.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-eu.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/countries\/phones":{"get":{"summary":"List Countries Phone Codes","operationId":"localeListCountriesPhones","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all countries phone codes. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Phones List","schema":{"$ref":"#\/definitions\/phoneList"}}},"x-appwrite":{"method":"listCountriesPhones","weight":85,"cookies":false,"type":"","demo":"locale\/list-countries-phones.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-countries-phones.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/currencies":{"get":{"summary":"List Currencies","operationId":"localeListCurrencies","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.","responses":{"200":{"description":"Currencies List","schema":{"$ref":"#\/definitions\/currencyList"}}},"x-appwrite":{"method":"listCurrencies","weight":87,"cookies":false,"type":"","demo":"locale\/list-currencies.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-currencies.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}]}},"\/locale\/languages":{"get":{"summary":"List Languages","operationId":"localeListLanguages","consumes":["application\/json"],"produces":["application\/json"],"tags":["locale"],"description":"List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.","responses":{"200":{"description":"Languages List","schema":{"$ref":"#\/definitions\/languageList"}}},"x-appwrite":{"method":"listLanguages","weight":88,"cookies":false,"type":"","demo":"locale\/list-languages.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/locale\/list-languages.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"locale.read","platforms":["client","server","server"],"packaging":false,"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":135,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: enabled, name, fileSecurity, maximumFileSize, encryption, antivirus","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create bucket","operationId":"storageCreateBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new storage bucket.","responses":{"201":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"createBucket","weight":134,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[BUCKET_ID]"},"name":{"type":"string","description":"Bucket name","default":null,"x-example":"[NAME]"},"permissions":{"type":"array","description":"An array of permission strings. By default, no user is granted with any permissions. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["bucketId","name"]}}]}},"\/storage\/buckets\/{bucketId}":{"get":{"summary":"Get Bucket","operationId":"storageGetBucket","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a storage bucket by its unique ID. This endpoint response returns a JSON object with the storage bucket metadata.","responses":{"200":{"description":"Bucket","schema":{"$ref":"#\/definitions\/bucket"}}},"x-appwrite":{"method":"getBucket","weight":136,"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":137,"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]"},"permissions":{"type":"array","description":"An array of permission strings. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}},"fileSecurity":{"type":"boolean","description":"Enables configuring permissions for individual file. A user needs one of file or bucket level permissions to access a file. [Learn more about permissions](\/docs\/permissions).","default":false,"x-example":false},"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":1},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions. Maximum of 100 extensions are allowed, each 64 characters long.","default":[],"x-example":null,"items":{"type":"string"}},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Can be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd), For file size above 20MB compression is skipped even if it's enabled","default":"none","x-example":"none"},"encryption":{"type":"boolean","description":"Is encryption enabled? For file size above 20MB encryption is skipped even if it's enabled","default":true,"x-example":false},"antivirus":{"type":"boolean","description":"Is virus scanning enabled? For file size above 20MB AntiVirus scanning is skipped even if it's enabled","default":true,"x-example":false}},"required":["name"]}}]},"delete":{"summary":"Delete Bucket","operationId":"storageDeleteBucket","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a storage bucket by its unique ID.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteBucket","weight":138,"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.","responses":{"200":{"description":"Files List","schema":{"$ref":"#\/definitions\/fileList"}}},"x-appwrite":{"method":"listFiles","weight":140,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, signature, mimeType, sizeOriginal, chunksTotal, chunksUploaded","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create File","operationId":"storageCreateFile","consumes":["multipart\/form-data"],"produces":["application\/json"],"tags":["storage"],"description":"Create a new file. Before using this route, you should create a new bucket resource using either a [server integration](\/docs\/server\/storage#storageCreateBucket) API or directly from your Appwrite console.\n\nLarger files should be uploaded using multiple requests with the [content-range](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Content-Range) header to send a partial request with a maximum supported chunk of `5MB`. The `content-range` header values should always be in bytes.\n\nWhen the first request is sent, the server will return the **File** object, and the subsequent part request must include the file's **id** in `x-appwrite-id` header to allow the server to know that the partial upload is for the existing file and not for a new one.\n\nIf you're creating a new file using one of the Appwrite SDKs, all the chunking logic will be managed by the SDK internally.\n","responses":{"201":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"createFile","weight":139,"cookies":false,"type":"upload","demo":"storage\/create-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/create-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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 a custom ID or generate a random ID with `ID.unique()`. Valid 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":"permissions","description":"An array of permission strings. By default, only the current user is granted all permissions. [Learn more about permissions](\/docs\/permissions).","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"x-example":"[\"read(\"any\")\"]","in":"formData"}]}},"\/storage\/buckets\/{bucketId}\/files\/{fileId}":{"get":{"summary":"Get File","operationId":"storageGetFile","consumes":["application\/json"],"produces":["application\/json"],"tags":["storage"],"description":"Get a file by its unique ID. This endpoint response returns a JSON object with the file metadata.","responses":{"200":{"description":"File","schema":{"$ref":"#\/definitions\/file"}}},"x-appwrite":{"method":"getFile","weight":141,"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":145,"cookies":false,"type":"","demo":"storage\/update-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/update-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":{"permissions":{"type":"array","description":"An array of permission string. By default, the current permissions are inherited. [Learn more about permissions](\/docs\/permissions).","default":null,"x-example":"[\"read(\"any\")\"]","items":{"type":"string"}}}}}]},"delete":{"summary":"Delete File","operationId":"storageDeleteFile","consumes":["application\/json"],"produces":[],"tags":["storage"],"description":"Delete a file by its unique ID. Only users with write permissions have access to delete this resource.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteFile","weight":146,"cookies":false,"type":"","demo":"storage\/delete-file.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/storage\/delete-file.md","rate-limit":60,"rate-time":60,"rate-key":"ip:{ip},method:{method},url:{url},userId:{userId}","scope":"files.write","platforms":["client","server","server"],"packaging":false,"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":143,"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":142,"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":144,"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.","responses":{"200":{"description":"Teams List","schema":{"$ref":"#\/definitions\/teamList"}}},"x-appwrite":{"method":"list","weight":150,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, total","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team","operationId":"teamsCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Create a new team. The user who creates the team will automatically be assigned as the owner of the team. Only the users with the owner role can invite new members, add new owners and delete or update the team.","responses":{"201":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"create","weight":149,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, 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). Maximum of 100 roles are allowed, each 32 characters long.","default":["owner"],"x-example":null,"items":{"type":"string"}}},"required":["teamId","name"]}}]}},"\/teams\/{teamId}":{"get":{"summary":"Get Team","operationId":"teamsGet","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Get a team by its ID. All team members have read access for this resource.","responses":{"200":{"description":"Team","schema":{"$ref":"#\/definitions\/team"}}},"x-appwrite":{"method":"get","weight":151,"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":152,"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":153,"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":"List Team Memberships","operationId":"teamsListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Use this endpoint to list a team's members using the team's ID. All team members have read access to this endpoint.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":155,"cookies":false,"type":"","demo":"teams\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/teams\/list-team-members.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"teams.read","platforms":["client","server","server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[],"JWT":[]}],"parameters":[{"name":"teamId","description":"Team ID.","required":true,"type":"string","x-example":"[TEAM_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: userId, teamId, invited, joined, confirm","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create Team Membership","operationId":"teamsCreateMembership","consumes":["application\/json"],"produces":["application\/json"],"tags":["teams"],"description":"Invite a new member to join your team. 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":154,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}},"url":{"type":"string","description":"URL to redirect the user back to your app from the invitation email. Only URLs from hostnames in your project platform list are allowed. This requirement helps to prevent an [open redirect](https:\/\/cheatsheetseries.owasp.org\/cheatsheets\/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.html) attack against your project API.","default":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":"Membership","schema":{"$ref":"#\/definitions\/membership"}}},"x-appwrite":{"method":"getMembership","weight":156,"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":157,"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). Maximum of 100 roles are allowed, each 32 characters long.","default":null,"x-example":null,"items":{"type":"string"}}},"required":["roles"]}}]},"delete":{"summary":"Delete Team Membership","operationId":"teamsDeleteMembership","consumes":["application\/json"],"produces":[],"tags":["teams"],"description":"This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. You can also use this endpoint to delete a user membership even if it is not accepted.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"deleteMembership","weight":159,"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":158,"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":169,"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":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Maximum of 100 queries are allowed, each 4096 characters long. You may filter on the following attributes: name, email, phone, status, passwordUpdate, registration, emailVerification, phoneVerification","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"},{"name":"search","description":"Search term to filter your list results. Max length: 256 chars.","required":false,"type":"string","x-example":"[SEARCH]","default":"","in":"query"}]},"post":{"summary":"Create User","operationId":"usersCreate","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"create","weight":161,"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 a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"phone":{"type":"string","description":"Phone number. Format this number with a leading '+' and a country code, e.g., +16175551212.","default":null,"x-example":"+12065550100"},"password":{"type":"string","description":"Plain text user password. Must be at least 8 chars.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId"]}}]}},"\/users\/argon2":{"post":{"summary":"Create User with Argon2 Password","operationId":"usersCreateArgon2User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Argon2](https:\/\/en.wikipedia.org\/wiki\/Argon2) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createArgon2User","weight":164,"cookies":false,"type":"","demo":"users\/create-argon2user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-argon2-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Argon2.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/bcrypt":{"post":{"summary":"Create User with Bcrypt Password","operationId":"usersCreateBcryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Bcrypt](https:\/\/en.wikipedia.org\/wiki\/Bcrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createBcryptUser","weight":162,"cookies":false,"type":"","demo":"users\/create-bcrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-bcrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Bcrypt.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/md5":{"post":{"summary":"Create User with MD5 Password","operationId":"usersCreateMD5User","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [MD5](https:\/\/en.wikipedia.org\/wiki\/MD5) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createMD5User","weight":163,"cookies":false,"type":"","demo":"users\/create-m-d5user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-md5-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using MD5.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/phpass":{"post":{"summary":"Create User with PHPass Password","operationId":"usersCreatePHPassUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [PHPass](https:\/\/www.openwall.com\/phpass\/) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createPHPassUser","weight":166,"cookies":false,"type":"","demo":"users\/create-p-h-pass-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-phpass-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or pass the string `ID.unique()`to auto generate it. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using PHPass.","default":null,"x-example":"password"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password"]}}]}},"\/users\/scrypt":{"post":{"summary":"Create User with Scrypt Password","operationId":"usersCreateScryptUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt](https:\/\/github.com\/Tarsnap\/scrypt) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptUser","weight":167,"cookies":false,"type":"","demo":"users\/create-scrypt-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Optional salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordCpu":{"type":"integer","description":"Optional CPU cost used to hash password.","default":null,"x-example":null},"passwordMemory":{"type":"integer","description":"Optional memory cost used to hash password.","default":null,"x-example":null},"passwordParallel":{"type":"integer","description":"Optional parallelization cost used to hash password.","default":null,"x-example":null},"passwordLength":{"type":"integer","description":"Optional hash length used to hash password.","default":null,"x-example":null},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordCpu","passwordMemory","passwordParallel","passwordLength"]}}]}},"\/users\/scrypt-modified":{"post":{"summary":"Create User with Scrypt Modified Password","operationId":"usersCreateScryptModifiedUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [Scrypt Modified](https:\/\/gist.github.com\/Meldiron\/eecf84a0225eccb5a378d45bb27462cc) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createScryptModifiedUser","weight":168,"cookies":false,"type":"","demo":"users\/create-scrypt-modified-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-scrypt-modified-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using Scrypt Modified.","default":null,"x-example":"password"},"passwordSalt":{"type":"string","description":"Salt used to hash password.","default":null,"x-example":"[PASSWORD_SALT]"},"passwordSaltSeparator":{"type":"string","description":"Salt separator used to hash password.","default":null,"x-example":"[PASSWORD_SALT_SEPARATOR]"},"passwordSignerKey":{"type":"string","description":"Signer key used to hash password.","default":null,"x-example":"[PASSWORD_SIGNER_KEY]"},"name":{"type":"string","description":"User name. Max length: 128 chars.","default":"","x-example":"[NAME]"}},"required":["userId","email","password","passwordSalt","passwordSaltSeparator","passwordSignerKey"]}}]}},"\/users\/sha":{"post":{"summary":"Create User with SHA Password","operationId":"usersCreateSHAUser","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Create a new user. Password provided must be hashed with the [SHA](https:\/\/en.wikipedia.org\/wiki\/Secure_Hash_Algorithm) algorithm. Use the [POST \/users](\/docs\/server\/users#usersCreate) endpoint to create users with a plain text password.","responses":{"201":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"createSHAUser","weight":165,"cookies":false,"type":"","demo":"users\/create-s-h-a-user.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/create-sha-user.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"payload","in":"body","schema":{"type":"object","properties":{"userId":{"type":"string","description":"User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.","default":null,"x-example":"[USER_ID]"},"email":{"type":"string","description":"User email.","default":null,"x-example":"email@example.com"},"password":{"type":"string","description":"User password hashed using SHA.","default":null,"x-example":"password"},"passwordVersion":{"type":"string","description":"Optional SHA version used to hash password. Allowed values are: 'sha1', 'sha224', 'sha256', 'sha384', 'sha512\/224', 'sha512\/256', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512'","default":"","x-example":"sha1"},"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":170,"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, thereby releasing it's ID. Since ID is released and can be reused, all user-related resources like documents or storage files should be deleted before user deletion. If you want to keep ID reserved, use the [updateStatus](\/docs\/server\/users#usersUpdateStatus) endpoint instead.","responses":{"204":{"description":"No content"}},"x-appwrite":{"method":"delete","weight":186,"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":180,"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":"List User Logs","operationId":"usersListLogs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user activity logs list by its unique ID.","responses":{"200":{"description":"Logs List","schema":{"$ref":"#\/definitions\/logList"}}},"x-appwrite":{"method":"listLogs","weight":174,"cookies":false,"type":"","demo":"users\/list-logs.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-logs.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"queries","description":"Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https:\/\/appwrite.io\/docs\/databases#querying-documents). Only supported methods are limit and offset","required":false,"type":"array","collectionFormat":"multi","items":{"type":"string"},"default":[],"in":"query"}]}},"\/users\/{userId}\/memberships":{"get":{"summary":"List User Memberships","operationId":"usersListMemberships","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user membership list by its unique ID.","responses":{"200":{"description":"Memberships List","schema":{"$ref":"#\/definitions\/membershipList"}}},"x-appwrite":{"method":"listMemberships","weight":173,"cookies":false,"type":"","demo":"users\/list-memberships.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-memberships.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"}]}},"\/users\/{userId}\/name":{"patch":{"summary":"Update Name","operationId":"usersUpdateName","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user name by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateName","weight":178,"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":179,"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}\/phone":{"patch":{"summary":"Update Phone","operationId":"usersUpdatePhone","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhone","weight":181,"cookies":false,"type":"","demo":"users\/update-phone.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"number":{"type":"string","description":"User phone number.","default":null,"x-example":"+12065550100"}},"required":["number"]}}]}},"\/users\/{userId}\/prefs":{"get":{"summary":"Get User Preferences","operationId":"usersGetPrefs","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user preferences by its unique ID.","responses":{"200":{"description":"Preferences","schema":{"$ref":"#\/definitions\/preferences"}}},"x-appwrite":{"method":"getPrefs","weight":171,"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":183,"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":"List User Sessions","operationId":"usersListSessions","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Get the user sessions list by its unique ID.","responses":{"200":{"description":"Sessions List","schema":{"$ref":"#\/definitions\/sessionList"}}},"x-appwrite":{"method":"listSessions","weight":172,"cookies":false,"type":"","demo":"users\/list-sessions.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/list-user-sessions.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.read","platforms":["server"],"packaging":false,"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":185,"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":184,"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. Use this endpoint as an alternative to deleting a user if you want to keep user's ID reserved.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateStatus","weight":175,"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":"usersUpdateEmailVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user email verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updateEmailVerification","weight":182,"cookies":false,"type":"","demo":"users\/update-email-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-email-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"emailVerification":{"type":"boolean","description":"User email verification status.","default":null,"x-example":false}},"required":["emailVerification"]}}]}},"\/users\/{userId}\/verification\/phone":{"patch":{"summary":"Update Phone Verification","operationId":"usersUpdatePhoneVerification","consumes":["application\/json"],"produces":["application\/json"],"tags":["users"],"description":"Update the user phone verification status by its unique ID.","responses":{"200":{"description":"User","schema":{"$ref":"#\/definitions\/user"}}},"x-appwrite":{"method":"updatePhoneVerification","weight":177,"cookies":false,"type":"","demo":"users\/update-phone-verification.md","edit":"https:\/\/github.com\/appwrite\/appwrite\/edit\/master\/docs\/references\/users\/update-user-phone-verification.md","rate-limit":0,"rate-time":3600,"rate-key":"url:{url},ip:{ip}","scope":"users.write","platforms":["server"],"packaging":false,"auth":{"Project":[],"Key":[]}},"security":[{"Project":[],"Key":[]}],"parameters":[{"name":"userId","description":"User ID.","required":true,"type":"string","x-example":"[USER_ID]","in":"path"},{"name":"payload","in":"body","schema":{"type":"object","properties":{"phoneVerification":{"type":"boolean","description":"User phone verification status.","default":null,"x-example":false}},"required":["phoneVerification"]}}]}}},"tags":[{"name":"account","description":"The Account service allows you to authenticate and manage a user account.","x-globalAttributes":[]},{"name":"avatars","description":"The Avatars service aims to help you complete everyday tasks related to your app image, icons, and avatars.","x-globalAttributes":[]},{"name":"databases","description":"The Databases service allows you to create structured collections of documents, query and filter lists of documents","x-globalAttributes":["databaseId"]},{"name":"locale","description":"The Locale service allows you to customize your app based on your users' location.","x-globalAttributes":[]},{"name":"health","description":"The Health service allows you to both validate and monitor your Appwrite server's health.","x-globalAttributes":[]},{"name":"projects","description":"The Project service allows you to manage all the projects in your Appwrite server.","x-globalAttributes":[]},{"name":"storage","description":"The Storage service allows you to manage your project files.","x-globalAttributes":[]},{"name":"teams","description":"The Teams service allows you to group users of your project and to enable them to share read and write access to your project resources","x-globalAttributes":[]},{"name":"users","description":"The Users service allows you to manage your project users.","x-globalAttributes":[]},{"name":"functions","description":"The Functions Service allows you view, create and manage your Cloud Functions.","x-globalAttributes":[]},{"name":"graphql","description":"The GraphQL API allows you to query and mutate your Appwrite server using GraphQL.","x-globalAttributes":[]}],"definitions":{"any":{"description":"Any","type":"object","additionalProperties":true},"documentList":{"description":"Documents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of documents documents that matched your query.","x-example":5,"format":"int32"},"documents":{"type":"array","description":"List of documents.","items":{"type":"object","$ref":"#\/definitions\/document"},"x-example":""}},"required":["total","documents"]},"collectionList":{"description":"Collections List","type":"object","properties":{"total":{"type":"integer","description":"Total number of collections documents that matched your query.","x-example":5,"format":"int32"},"collections":{"type":"array","description":"List of collections.","items":{"type":"object","$ref":"#\/definitions\/collection"},"x-example":""}},"required":["total","collections"]},"databaseList":{"description":"Databases List","type":"object","properties":{"total":{"type":"integer","description":"Total number of databases documents that matched your query.","x-example":5,"format":"int32"},"databases":{"type":"array","description":"List of databases.","items":{"type":"object","$ref":"#\/definitions\/database"},"x-example":""}},"required":["total","databases"]},"indexList":{"description":"Indexes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of indexes documents that matched your query.","x-example":5,"format":"int32"},"indexes":{"type":"array","description":"List of indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":""}},"required":["total","indexes"]},"userList":{"description":"Users List","type":"object","properties":{"total":{"type":"integer","description":"Total number of users documents that matched your query.","x-example":5,"format":"int32"},"users":{"type":"array","description":"List of users.","items":{"type":"object","$ref":"#\/definitions\/user"},"x-example":""}},"required":["total","users"]},"sessionList":{"description":"Sessions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of sessions documents that matched your query.","x-example":5,"format":"int32"},"sessions":{"type":"array","description":"List of sessions.","items":{"type":"object","$ref":"#\/definitions\/session"},"x-example":""}},"required":["total","sessions"]},"logList":{"description":"Logs List","type":"object","properties":{"total":{"type":"integer","description":"Total number of logs documents that matched your query.","x-example":5,"format":"int32"},"logs":{"type":"array","description":"List of logs.","items":{"type":"object","$ref":"#\/definitions\/log"},"x-example":""}},"required":["total","logs"]},"fileList":{"description":"Files List","type":"object","properties":{"total":{"type":"integer","description":"Total number of files documents that matched your query.","x-example":5,"format":"int32"},"files":{"type":"array","description":"List of files.","items":{"type":"object","$ref":"#\/definitions\/file"},"x-example":""}},"required":["total","files"]},"bucketList":{"description":"Buckets List","type":"object","properties":{"total":{"type":"integer","description":"Total number of buckets documents that matched your query.","x-example":5,"format":"int32"},"buckets":{"type":"array","description":"List of buckets.","items":{"type":"object","$ref":"#\/definitions\/bucket"},"x-example":""}},"required":["total","buckets"]},"teamList":{"description":"Teams List","type":"object","properties":{"total":{"type":"integer","description":"Total number of teams documents that matched your query.","x-example":5,"format":"int32"},"teams":{"type":"array","description":"List of teams.","items":{"type":"object","$ref":"#\/definitions\/team"},"x-example":""}},"required":["total","teams"]},"membershipList":{"description":"Memberships List","type":"object","properties":{"total":{"type":"integer","description":"Total number of memberships documents that matched your query.","x-example":5,"format":"int32"},"memberships":{"type":"array","description":"List of memberships.","items":{"type":"object","$ref":"#\/definitions\/membership"},"x-example":""}},"required":["total","memberships"]},"functionList":{"description":"Functions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of functions documents that matched your query.","x-example":5,"format":"int32"},"functions":{"type":"array","description":"List of functions.","items":{"type":"object","$ref":"#\/definitions\/function"},"x-example":""}},"required":["total","functions"]},"runtimeList":{"description":"Runtimes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of runtimes documents that matched your query.","x-example":5,"format":"int32"},"runtimes":{"type":"array","description":"List of runtimes.","items":{"type":"object","$ref":"#\/definitions\/runtime"},"x-example":""}},"required":["total","runtimes"]},"deploymentList":{"description":"Deployments List","type":"object","properties":{"total":{"type":"integer","description":"Total number of deployments documents that matched your query.","x-example":5,"format":"int32"},"deployments":{"type":"array","description":"List of deployments.","items":{"type":"object","$ref":"#\/definitions\/deployment"},"x-example":""}},"required":["total","deployments"]},"executionList":{"description":"Executions List","type":"object","properties":{"total":{"type":"integer","description":"Total number of executions documents that matched your query.","x-example":5,"format":"int32"},"executions":{"type":"array","description":"List of executions.","items":{"type":"object","$ref":"#\/definitions\/execution"},"x-example":""}},"required":["total","executions"]},"countryList":{"description":"Countries List","type":"object","properties":{"total":{"type":"integer","description":"Total number of countries documents that matched your query.","x-example":5,"format":"int32"},"countries":{"type":"array","description":"List of countries.","items":{"type":"object","$ref":"#\/definitions\/country"},"x-example":""}},"required":["total","countries"]},"continentList":{"description":"Continents List","type":"object","properties":{"total":{"type":"integer","description":"Total number of continents documents that matched your query.","x-example":5,"format":"int32"},"continents":{"type":"array","description":"List of continents.","items":{"type":"object","$ref":"#\/definitions\/continent"},"x-example":""}},"required":["total","continents"]},"languageList":{"description":"Languages List","type":"object","properties":{"total":{"type":"integer","description":"Total number of languages documents that matched your query.","x-example":5,"format":"int32"},"languages":{"type":"array","description":"List of languages.","items":{"type":"object","$ref":"#\/definitions\/language"},"x-example":""}},"required":["total","languages"]},"currencyList":{"description":"Currencies List","type":"object","properties":{"total":{"type":"integer","description":"Total number of currencies documents that matched your query.","x-example":5,"format":"int32"},"currencies":{"type":"array","description":"List of currencies.","items":{"type":"object","$ref":"#\/definitions\/currency"},"x-example":""}},"required":["total","currencies"]},"phoneList":{"description":"Phones List","type":"object","properties":{"total":{"type":"integer","description":"Total number of phones documents that matched your query.","x-example":5,"format":"int32"},"phones":{"type":"array","description":"List of phones.","items":{"type":"object","$ref":"#\/definitions\/phone"},"x-example":""}},"required":["total","phones"]},"variableList":{"description":"Variables List","type":"object","properties":{"total":{"type":"integer","description":"Total number of variables documents that matched your query.","x-example":5,"format":"int32"},"variables":{"type":"array","description":"List of variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":""}},"required":["total","variables"]},"database":{"description":"Database","type":"object","properties":{"$id":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Database name.","x-example":"My Database"},"$createdAt":{"type":"string","description":"Database creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Database update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","name","$createdAt","$updatedAt"]},"collection":{"description":"Collection","type":"object","properties":{"$id":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Collection creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Collection update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Collection permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c16897e"},"name":{"type":"string","description":"Collection name.","x-example":"My Collection"},"enabled":{"type":"boolean","description":"Collection enabled.","x-example":false},"documentSecurity":{"type":"boolean","description":"Whether document-level permissions are enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"attributes":{"type":"array","description":"Collection attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/attributeString"}]},"x-example":{}},"indexes":{"type":"array","description":"Collection indexes.","items":{"type":"object","$ref":"#\/definitions\/index"},"x-example":{}}},"required":["$id","$createdAt","$updatedAt","$permissions","databaseId","name","enabled","documentSecurity","attributes","indexes"]},"attributeList":{"description":"Attributes List","type":"object","properties":{"total":{"type":"integer","description":"Total number of attributes in the given collection.","x-example":5,"format":"int32"},"attributes":{"type":"array","description":"List of attributes.","items":{"x-anyOf":[{"$ref":"#\/definitions\/attributeBoolean"},{"$ref":"#\/definitions\/attributeInteger"},{"$ref":"#\/definitions\/attributeFloat"},{"$ref":"#\/definitions\/attributeEmail"},{"$ref":"#\/definitions\/attributeEnum"},{"$ref":"#\/definitions\/attributeUrl"},{"$ref":"#\/definitions\/attributeIp"},{"$ref":"#\/definitions\/attributeDatetime"},{"$ref":"#\/definitions\/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":"count"},"type":{"type":"string","description":"Attribute type.","x-example":"integer"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"percentageCompleted"},"type":{"type":"string","description":"Attribute type.","x-example":"double"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"isEnabled"},"type":{"type":"string","description":"Attribute type.","x-example":"boolean"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"userEmail"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"status"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"ipAddress"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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":"githubUrl"},"type":{"type":"string","description":"Attribute type.","x-example":"string"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","x-example":"available"},"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"]},"attributeDatetime":{"description":"AttributeDatetime","type":"object","properties":{"key":{"type":"string","description":"Attribute Key.","x-example":"birthDay"},"type":{"type":"string","description":"Attribute type.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"string","description":"Attribute status. Possible values: `available`, `processing`, `deleting`, `stuck`, or `failed`","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":"ISO 8601 format.","x-example":"datetime"},"default":{"type":"string","description":"Default value for attribute when not provided. Only null is optional","x-example":"2020-10-15T06:38:00.000+00:00","x-nullable":true}},"required":["key","type","status","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":[],"x-nullable":true}},"required":["key","type","status","attributes"]},"document":{"description":"Document","type":"object","properties":{"$id":{"type":"string","description":"Document ID.","x-example":"5e5ea5c16897e"},"$collectionId":{"type":"string","description":"Collection ID.","x-example":"5e5ea5c15117e"},"$databaseId":{"type":"string","description":"Database ID.","x-example":"5e5ea5c15117e"},"$createdAt":{"type":"string","description":"Document creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Document update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Document permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]}},"additionalProperties":true,"required":["$id","$collectionId","$databaseId","$createdAt","$updatedAt","$permissions"]},"log":{"description":"Log","type":"object","properties":{"event":{"type":"string","description":"Event name.","x-example":"account.sessions.create"},"userId":{"type":"string","description":"User ID.","x-example":"610fc2f985ee0"},"userEmail":{"type":"string","description":"User Email.","x-example":"john@appwrite.io"},"userName":{"type":"string","description":"User Name.","x-example":"John Doe"},"mode":{"type":"string","description":"API mode when event triggered.","x-example":"admin"},"ip":{"type":"string","description":"IP session in use when the session was created.","x-example":"127.0.0.1"},"time":{"type":"string","description":"Log creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"}},"required":["event","userId","userEmail","userName","mode","ip","time","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName"]},"user":{"description":"User","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"password":{"type":"string","description":"Hashed user password.","x-example":"$argon2id$v=19$m=2048,t=4,p=3$aUZjLnliVWRINmFNTWMudg$5S+x+7uA31xFnrHFT47yFwcJeaP0w92L\/4LdgrVRXxE"},"hash":{"type":"string","description":"Password hashing algorithm.","x-example":"argon2"},"hashOptions":{"type":"object","description":"Password hashing algorithm configuration.","x-example":{},"items":{"x-oneOf":[{"$ref":"#\/definitions\/algoArgon2"},{"$ref":"#\/definitions\/algoScrypt"},{"$ref":"#\/definitions\/algoScryptModified"},{"$ref":"#\/definitions\/algoBcrypt"},{"$ref":"#\/definitions\/algoPhpass"},{"$ref":"#\/definitions\/algoSha"},{"$ref":"#\/definitions\/algoMd5"}]}},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","password","hash","hashOptions","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"algoMd5":{"description":"AlgoMD5","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"md5"}},"required":["type"]},"algoSha":{"description":"AlgoSHA","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"sha"}},"required":["type"]},"algoPhpass":{"description":"AlgoPHPass","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"phpass"}},"required":["type"]},"algoBcrypt":{"description":"AlgoBcrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"bcrypt"}},"required":["type"]},"algoScrypt":{"description":"AlgoScrypt","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scrypt"},"costCpu":{"type":"integer","description":"CPU complexity of computed hash.","x-example":8,"format":"int32"},"costMemory":{"type":"integer","description":"Memory complexity of computed hash.","x-example":14,"format":"int32"},"costParallel":{"type":"integer","description":"Parallelization of computed hash.","x-example":1,"format":"int32"},"length":{"type":"integer","description":"Length used to compute hash.","x-example":64,"format":"int32"}},"required":["type","costCpu","costMemory","costParallel","length"]},"algoScryptModified":{"description":"AlgoScryptModified","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"scryptMod"},"salt":{"type":"string","description":"Salt used to compute hash.","x-example":"UxLMreBr6tYyjQ=="},"saltSeparator":{"type":"string","description":"Separator used to compute hash.","x-example":"Bw=="},"signerKey":{"type":"string","description":"Key used to compute hash.","x-example":"XyEKE9RcTDeLEsL\/RjwPDBv\/RqDl8fb3gpYEOQaPihbxf1ZAtSOHCjuAAa7Q3oHpCYhXSN9tizHgVOwn6krflQ=="}},"required":["type","salt","saltSeparator","signerKey"]},"algoArgon2":{"description":"AlgoArgon2","type":"object","properties":{"type":{"type":"string","description":"Algo type.","x-example":"argon2"},"memoryCost":{"type":"integer","description":"Memory used to compute hash.","x-example":65536,"format":"int32"},"timeCost":{"type":"integer","description":"Amount of time consumed to compute hash","x-example":4,"format":"int32"},"threads":{"type":"integer","description":"Number of threads used to compute hash.","x-example":3,"format":"int32"}},"required":["type","memoryCost","timeCost","threads"]},"account":{"description":"Account","type":"object","properties":{"$id":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"User creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"User update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"User name.","x-example":"John Doe"},"registration":{"type":"string","description":"User registration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"status":{"type":"boolean","description":"User status. Pass `true` for enabled and `false` for disabled.","x-example":true},"passwordUpdate":{"type":"string","description":"Password update time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"email":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"phone":{"type":"string","description":"User phone number in E.164 format.","x-example":"+4930901820"},"emailVerification":{"type":"boolean","description":"Email verification status.","x-example":true},"phoneVerification":{"type":"boolean","description":"Phone verification status.","x-example":true},"prefs":{"type":"object","description":"User preferences as a key-value object","x-example":{"theme":"pink","timezone":"UTC"},"items":{"type":"object","$ref":"#\/definitions\/preferences"}}},"required":["$id","$createdAt","$updatedAt","name","registration","status","passwordUpdate","email","phone","emailVerification","phoneVerification","prefs"]},"preferences":{"description":"Preferences","type":"object","additionalProperties":true},"session":{"description":"Session","type":"object","properties":{"$id":{"type":"string","description":"Session ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Session creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5bb8c16897e"},"expire":{"type":"string","description":"Session expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"provider":{"type":"string","description":"Session Provider.","x-example":"email"},"providerUid":{"type":"string","description":"Session Provider User ID.","x-example":"user@example.com"},"providerAccessToken":{"type":"string","description":"Session Provider Access Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"providerAccessTokenExpiry":{"type":"string","description":"The date of when the access token expires in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"providerRefreshToken":{"type":"string","description":"Session Provider Refresh Token.","x-example":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3"},"ip":{"type":"string","description":"IP in use when the session was created.","x-example":"127.0.0.1"},"osCode":{"type":"string","description":"Operating system code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/os.json).","x-example":"Mac"},"osName":{"type":"string","description":"Operating system name.","x-example":"Mac"},"osVersion":{"type":"string","description":"Operating system version.","x-example":"Mac"},"clientType":{"type":"string","description":"Client type.","x-example":"browser"},"clientCode":{"type":"string","description":"Client code name. View list of [available options](https:\/\/github.com\/appwrite\/appwrite\/blob\/master\/docs\/lists\/clients.json).","x-example":"CM"},"clientName":{"type":"string","description":"Client name.","x-example":"Chrome Mobile iOS"},"clientVersion":{"type":"string","description":"Client version.","x-example":"84.0"},"clientEngine":{"type":"string","description":"Client engine name.","x-example":"WebKit"},"clientEngineVersion":{"type":"string","description":"Client engine name.","x-example":"605.1.15"},"deviceName":{"type":"string","description":"Device name.","x-example":"smartphone"},"deviceBrand":{"type":"string","description":"Device brand name.","x-example":"Google"},"deviceModel":{"type":"string","description":"Device model name.","x-example":"Nexus 5"},"countryCode":{"type":"string","description":"Country two-character ISO 3166-1 alpha code.","x-example":"US"},"countryName":{"type":"string","description":"Country name.","x-example":"United States"},"current":{"type":"boolean","description":"Returns true if this the current user session.","x-example":true}},"required":["$id","$createdAt","userId","expire","provider","providerUid","providerAccessToken","providerAccessTokenExpiry","providerRefreshToken","ip","osCode","osName","osVersion","clientType","clientCode","clientName","clientVersion","clientEngine","clientEngineVersion","deviceName","deviceBrand","deviceModel","countryCode","countryName","current"]},"token":{"description":"Token","type":"object","properties":{"$id":{"type":"string","description":"Token ID.","x-example":"bb8ea5c16897e"},"$createdAt":{"type":"string","description":"Token creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c168bb8"},"secret":{"type":"string","description":"Token secret key. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"expire":{"type":"string","description":"Token expiration date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"}},"required":["$id","$createdAt","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 European Union.","x-example":false},"currency":{"type":"string","description":"Currency code in [ISO 4217-1](http:\/\/en.wikipedia.org\/wiki\/ISO_4217) three-character format","x-example":"USD"}},"required":["ip","countryCode","country","continentCode","continent","eu","currency"]},"file":{"description":"File","type":"object","properties":{"$id":{"type":"string","description":"File ID.","x-example":"5e5ea5c16897e"},"bucketId":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"File creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"File update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"File permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"name":{"type":"string","description":"File name.","x-example":"Pink.png"},"signature":{"type":"string","description":"File MD5 signature.","x-example":"5d529fd02b544198ae075bd57c1762bb"},"mimeType":{"type":"string","description":"File mime type.","x-example":"image\/png"},"sizeOriginal":{"type":"integer","description":"File original size in bytes.","x-example":17890,"format":"int32"},"chunksTotal":{"type":"integer","description":"Total number of chunks available","x-example":17890,"format":"int32"},"chunksUploaded":{"type":"integer","description":"Total number of chunks uploaded","x-example":17890,"format":"int32"}},"required":["$id","bucketId","$createdAt","$updatedAt","$permissions","name","signature","mimeType","sizeOriginal","chunksTotal","chunksUploaded"]},"bucket":{"description":"Bucket","type":"object","properties":{"$id":{"type":"string","description":"Bucket ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Bucket creation time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Bucket update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Bucket permissions. [Learn more about permissions](\/docs\/permissions).","items":{"type":"string"},"x-example":["read(\"any\")"]},"fileSecurity":{"type":"boolean","description":"Whether file-level security is enabled. [Learn more about permissions](\/docs\/permissions).","x-example":true},"name":{"type":"string","description":"Bucket name.","x-example":"Documents"},"enabled":{"type":"boolean","description":"Bucket enabled.","x-example":false},"maximumFileSize":{"type":"integer","description":"Maximum file size supported.","x-example":100,"format":"int32"},"allowedFileExtensions":{"type":"array","description":"Allowed file extensions.","items":{"type":"string"},"x-example":["jpg","png"]},"compression":{"type":"string","description":"Compression algorithm choosen for compression. Will be one of none, [gzip](https:\/\/en.wikipedia.org\/wiki\/Gzip), or [zstd](https:\/\/en.wikipedia.org\/wiki\/Zstd).","x-example":"gzip"},"encryption":{"type":"boolean","description":"Bucket is encrypted.","x-example":false},"antivirus":{"type":"boolean","description":"Virus scanning is enabled.","x-example":false}},"required":["$id","$createdAt","$updatedAt","$permissions","fileSecurity","name","enabled","maximumFileSize","allowedFileExtensions","compression","encryption","antivirus"]},"team":{"description":"Team","type":"object","properties":{"$id":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Team creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Team update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"name":{"type":"string","description":"Team name.","x-example":"VIP"},"total":{"type":"integer","description":"Total number of team members.","x-example":7,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","name","total"]},"membership":{"description":"Membership","type":"object","properties":{"$id":{"type":"string","description":"Membership ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Membership creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Membership update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"userId":{"type":"string","description":"User ID.","x-example":"5e5ea5c16897e"},"userName":{"type":"string","description":"User name.","x-example":"John Doe"},"userEmail":{"type":"string","description":"User email address.","x-example":"john@appwrite.io"},"teamId":{"type":"string","description":"Team ID.","x-example":"5e5ea5c16897e"},"teamName":{"type":"string","description":"Team name.","x-example":"VIP"},"invited":{"type":"string","description":"Date, the user has been invited to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"joined":{"type":"string","description":"Date, the user has accepted the invitation to join the team in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"confirm":{"type":"boolean","description":"User confirmation status, true if the user has joined the team or false otherwise.","x-example":false},"roles":{"type":"array","description":"User list of roles","items":{"type":"string"},"x-example":"admin"}},"required":["$id","$createdAt","$updatedAt","userId","userName","userEmail","teamId","teamName","invited","joined","confirm","roles"]},"function":{"description":"Function","type":"object","properties":{"$id":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Function creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Function update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"execute":{"type":"array","description":"Execution permissions.","items":{"type":"string"},"x-example":"users"},"name":{"type":"string","description":"Function name.","x-example":"My Function"},"enabled":{"type":"boolean","description":"Function enabled.","x-example":false},"runtime":{"type":"string","description":"Function execution runtime.","x-example":"python-3.8"},"deployment":{"type":"string","description":"Function's active deployment ID.","x-example":"5e5ea5c16897e"},"vars":{"type":"array","description":"Function variables.","items":{"type":"object","$ref":"#\/definitions\/variable"},"x-example":[]},"events":{"type":"array","description":"Function trigger events.","items":{"type":"string"},"x-example":"account.create"},"schedule":{"type":"string","description":"Function execution schedult in CRON format.","x-example":"5 4 * * *"},"scheduleNext":{"type":"string","description":"Function's next scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"schedulePrevious":{"type":"string","description":"Function's previous scheduled execution time in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"timeout":{"type":"integer","description":"Function execution timeout in seconds.","x-example":15,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","execute","name","enabled","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"},"$createdAt":{"type":"string","description":"Deployment creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Deployment update date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"resourceId":{"type":"string","description":"Resource ID.","x-example":"5e5ea6g16897e"},"resourceType":{"type":"string","description":"Resource type.","x-example":"functions"},"entrypoint":{"type":"string","description":"The entrypoint file to use to execute the deployment code.","x-example":"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. Possible values are \"processing\", \"building\", \"pending\", \"ready\", and \"failed\".","x-example":"ready"},"buildStdout":{"type":"string","description":"The build stdout.","x-example":"enabled"},"buildStderr":{"type":"string","description":"The build stderr.","x-example":"enabled"},"buildTime":{"type":"integer","description":"The current build time in seconds.","x-example":128,"format":"int32"}},"required":["$id","$createdAt","$updatedAt","resourceId","resourceType","entrypoint","size","buildId","activate","status","buildStdout","buildStderr","buildTime"]},"execution":{"description":"Execution","type":"object","properties":{"$id":{"type":"string","description":"Execution ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Execution creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Execution upate date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$permissions":{"type":"array","description":"Execution roles.","items":{"type":"string"},"x-example":["any"]},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea6g16897e"},"trigger":{"type":"string","description":"The trigger that caused the function to execute. Possible values can be: `http`, `schedule`, or `event`.","x-example":"http"},"status":{"type":"string","description":"The status of the function execution. Possible values can be: `waiting`, `processing`, `completed`, or `failed`.","x-example":"processing"},"statusCode":{"type":"integer","description":"The script status code.","x-example":0,"format":"int32"},"response":{"type":"string","description":"The script response output string. Logs the last 4,000 characters of the execution response output.","x-example":""},"stdout":{"type":"string","description":"The script stdout output string. Logs the last 4,000 characters of the execution stdout output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"stderr":{"type":"string","description":"The script stderr output string. Logs the last 4,000 characters of the execution stderr output. This will return an empty string unless the response is returned using an API key or as part of a webhook payload.","x-example":""},"duration":{"type":"number","description":"The script execution duration in seconds.","x-example":0.4,"format":"double"}},"required":["$id","$createdAt","$updatedAt","$permissions","functionId","trigger","status","statusCode","response","stdout","stderr","duration"]},"variable":{"description":"Variable","type":"object","properties":{"$id":{"type":"string","description":"Variable ID.","x-example":"5e5ea5c16897e"},"$createdAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"$updatedAt":{"type":"string","description":"Variable creation date in ISO 8601 format.","x-example":"2020-10-15T06:38:00.000+00:00"},"key":{"type":"string","description":"Variable key.","x-example":"API_KEY"},"value":{"type":"string","description":"Variable value.","x-example":"myPa$$word1"},"functionId":{"type":"string","description":"Function ID.","x-example":"5e5ea5c16897e"}},"required":["$id","$createdAt","$updatedAt","key","value","functionId"]},"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 From c340fae696eee53c01b763df58cc8a1528bb882e Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Mon, 13 Feb 2023 16:59:05 -0800 Subject: [PATCH 83/94] Update CHANGES.md --- CHANGES.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 66d4ec1891..b722bebf9d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,12 +1,16 @@ # Version 1.2.1 -## Features - ## Changes +- Update DBIP Database [#5049](https://github.com/appwrite/appwrite/pull/5049) ## Bugs - Fix a few null safety warnings [#4654](https://github.com/appwrite/appwrite/pull/4654) - Fix timestamp format in Realtime response [#4515](https://github.com/appwrite/appwrite/pull/4515) - Add flutter-web as a platform type [#4992](https://github.com/appwrite/appwrite/pull/4992) +- Fix typo in Model/Locale.php [#4669](https://github.com/appwrite/appwrite/pull/4669) +- Fix deletes worker not deleting project database tables [#4984](https://github.com/appwrite/appwrite/pull/4984) +- Fix deletes worker not deleting database collections [#4983](https://github.com/appwrite/appwrite/pull/4983) +- Fix restart policy for worker-messaging container [#4994](https://github.com/appwrite/appwrite/pull/4994) +- Fix validating origin for apple platforms [#5089](https://github.com/appwrite/appwrite/pull/5089) # Version 1.2.0 ## Features From 637e4098be1f8f134ebc2b34ede038f2dc8d102b Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 14 Feb 2023 05:56:14 +0000 Subject: [PATCH 84/94] provider disabled test --- .../Account/AccountCustomClientTest.php | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/e2e/Services/Account/AccountCustomClientTest.php b/tests/e2e/Services/Account/AccountCustomClientTest.php index aadef9708f..f66b42092f 100644 --- a/tests/e2e/Services/Account/AccountCustomClientTest.php +++ b/tests/e2e/Services/Account/AccountCustomClientTest.php @@ -57,6 +57,34 @@ class AccountCustomClientTest extends Scope $this->assertEquals(200, $response['headers']['status-code']); $this->assertEquals('success', $response['body']['result']); + /** + * Test for Failure when disabled + */ + $response = $this->client->call(Client::METHOD_PATCH, '/projects/' . $this->getProject()['$id'] . '/oauth2', array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => 'console', + 'cookie' => 'a_session_console=' . $this->getRoot()['session'], + ]), [ + 'provider' => $provider, + 'appId' => $appId, + 'secret' => $secret, + 'enabled' => false, + ]); + + $this->assertEquals($response['headers']['status-code'], 200); + + $response = $this->client->call(Client::METHOD_GET, '/account/sessions/oauth2/' . $provider, array_merge([ + 'origin' => 'http://localhost', + 'content-type' => 'application/json', + 'x-appwrite-project' => $this->getProject()['$id'], + ]), [ + 'success' => 'http://localhost/v1/mock/tests/general/oauth2/success', + 'failure' => 'http://localhost/v1/mock/tests/general/oauth2/failure', + ]); + + $this->assertEquals(500, $response['headers']['status-code']); + return []; } From 3f171fbdb9253172ca480ae990f674e577585eed Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 14 Feb 2023 06:07:06 +0000 Subject: [PATCH 85/94] fix error code --- tests/e2e/Services/Account/AccountCustomClientTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/Services/Account/AccountCustomClientTest.php b/tests/e2e/Services/Account/AccountCustomClientTest.php index f66b42092f..d623d07661 100644 --- a/tests/e2e/Services/Account/AccountCustomClientTest.php +++ b/tests/e2e/Services/Account/AccountCustomClientTest.php @@ -83,7 +83,7 @@ class AccountCustomClientTest extends Scope 'failure' => 'http://localhost/v1/mock/tests/general/oauth2/failure', ]); - $this->assertEquals(500, $response['headers']['status-code']); + $this->assertEquals(412, $response['headers']['status-code']); return []; } From 265eea059912469cecdb6f9209451e790fcab1a0 Mon Sep 17 00:00:00 2001 From: fogelito Date: Tue, 14 Feb 2023 09:55:06 +0200 Subject: [PATCH 86/94] composer.lock --- composer.lock | 152 ++++++++++++++++++++++---------------------------- 1 file changed, 67 insertions(+), 85 deletions(-) diff --git a/composer.lock b/composer.lock index 54983ae536..73694e6b1e 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": "f5b808dcd123e264f312c4c98789eeaf", + "content-hash": "d57d56abd42a4f39c750d044dec6d212", "packages": [ { "name": "adhocore/jwt", @@ -2375,22 +2375,23 @@ }, { "name": "utopia-php/logger", - "version": "0.3.0", + "version": "0.3.1", "source": { "type": "git", "url": "https://github.com/utopia-php/logger.git", - "reference": "079656cb5169ca9600861eda0b6819199e3d4a57" + "reference": "de623f1ec1c672c795d113dd25c5bf212f7ef4fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/logger/zipball/079656cb5169ca9600861eda0b6819199e3d4a57", - "reference": "079656cb5169ca9600861eda0b6819199e3d4a57", + "url": "https://api.github.com/repos/utopia-php/logger/zipball/de623f1ec1c672c795d113dd25c5bf212f7ef4fc", + "reference": "de623f1ec1c672c795d113dd25c5bf212f7ef4fc", "shasum": "" }, "require": { "php": ">=8.0" }, "require-dev": { + "phpstan/phpstan": "1.9.x-dev", "phpunit/phpunit": "^9.3", "vimeo/psalm": "4.0.1" }, @@ -2404,20 +2405,6 @@ "license": [ "MIT" ], - "authors": [ - { - "name": "Eldad Fux", - "email": "eldad@appwrite.io" - }, - { - "name": "Matej Bačo", - "email": "matej@appwrite.io" - }, - { - "name": "Christy Jacob", - "email": "christy@appwrite.io" - } - ], "description": "Utopia Logger library is simple and lite library for logging information, such as errors or warnings. This library is aiming to be as simple and easy to learn and use.", "keywords": [ "appsignal", @@ -2435,22 +2422,22 @@ ], "support": { "issues": "https://github.com/utopia-php/logger/issues", - "source": "https://github.com/utopia-php/logger/tree/0.3.0" + "source": "https://github.com/utopia-php/logger/tree/0.3.1" }, - "time": "2022-03-18T10:56:57+00:00" + "time": "2023-02-10T15:52:50+00:00" }, { "name": "utopia-php/messaging", - "version": "0.1.0", + "version": "0.1.1", "source": { "type": "git", "url": "https://github.com/utopia-php/messaging.git", - "reference": "501272fad666f06bec8f130076862e7981a73f8c" + "reference": "a75d66ddd59b834ab500a4878a2c084e6572604a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/messaging/zipball/501272fad666f06bec8f130076862e7981a73f8c", - "reference": "501272fad666f06bec8f130076862e7981a73f8c", + "url": "https://api.github.com/repos/utopia-php/messaging/zipball/a75d66ddd59b834ab500a4878a2c084e6572604a", + "reference": "a75d66ddd59b834ab500a4878a2c084e6572604a", "shasum": "" }, "require": { @@ -2458,9 +2445,9 @@ "php": ">=8.0.0" }, "require-dev": { + "laravel/pint": "^1.2", "phpmailer/phpmailer": "6.6.*", - "phpunit/phpunit": "9.5.*", - "squizlabs/php_codesniffer": "^3.6" + "phpunit/phpunit": "9.5.*" }, "type": "library", "autoload": { @@ -2472,12 +2459,6 @@ "license": [ "MIT" ], - "authors": [ - { - "name": "Jake Barnby", - "email": "jake@appwrite.io" - } - ], "description": "A simple, light and advanced PHP messaging library", "keywords": [ "library", @@ -2489,9 +2470,9 @@ ], "support": { "issues": "https://github.com/utopia-php/messaging/issues", - "source": "https://github.com/utopia-php/messaging/tree/0.1.0" + "source": "https://github.com/utopia-php/messaging/tree/0.1.1" }, - "time": "2022-09-29T11:22:48+00:00" + "time": "2023-02-07T05:42:46+00:00" }, { "name": "utopia-php/mongo", @@ -3062,16 +3043,16 @@ "packages-dev": [ { "name": "appwrite/sdk-generator", - "version": "0.29.2", + "version": "0.29.4", "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator.git", - "reference": "d5352e09ffe9442eb1bf7a5ddbaf2618df8ade6a" + "reference": "35ec927d1de1854bebe8894e16b1646c3fdd5567" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/d5352e09ffe9442eb1bf7a5ddbaf2618df8ade6a", - "reference": "d5352e09ffe9442eb1bf7a5ddbaf2618df8ade6a", + "url": "https://api.github.com/repos/appwrite/sdk-generator/zipball/35ec927d1de1854bebe8894e16b1646c3fdd5567", + "reference": "35ec927d1de1854bebe8894e16b1646c3fdd5567", "shasum": "" }, "require": { @@ -3107,9 +3088,9 @@ "description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms", "support": { "issues": "https://github.com/appwrite/sdk-generator/issues", - "source": "https://github.com/appwrite/sdk-generator/tree/0.29.2" + "source": "https://github.com/appwrite/sdk-generator/tree/0.29.4" }, - "time": "2022-12-28T06:52:51+00:00" + "time": "2023-02-03T05:44:59+00:00" }, { "name": "doctrine/instantiator", @@ -3366,16 +3347,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.2", + "version": "v4.15.3", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc" + "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", - "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039", + "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039", "shasum": "" }, "require": { @@ -3416,9 +3397,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3" }, - "time": "2022-11-12T15:38:23+00:00" + "time": "2023-01-16T22:05:37+00:00" }, { "name": "phar-io/manifest", @@ -3698,20 +3679,20 @@ }, { "name": "phpspec/prophecy", - "version": "v1.16.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359" + "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be8cac52a0827776ff9ccda8c381ac5b71aeb359", - "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/15873c65b207b07765dbc3c95d20fdf4a320cbe2", + "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2", + "doctrine/instantiator": "^1.2 || ^2.0", "php": "^7.2 || 8.0.* || 8.1.* || 8.2.*", "phpdocumentor/reflection-docblock": "^5.2", "sebastian/comparator": "^3.0 || ^4.0", @@ -3719,6 +3700,7 @@ }, "require-dev": { "phpspec/phpspec": "^6.0 || ^7.0", + "phpstan/phpstan": "^1.9", "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", @@ -3759,22 +3741,22 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.16.0" + "source": "https://github.com/phpspec/prophecy/tree/v1.17.0" }, - "time": "2022-11-29T15:06:56+00:00" + "time": "2023-02-02T15:41:36+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.23", + "version": "9.2.24", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c" + "reference": "2cf940ebc6355a9d430462811b5aaa308b174bed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", - "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2cf940ebc6355a9d430462811b5aaa308b174bed", + "reference": "2cf940ebc6355a9d430462811b5aaa308b174bed", "shasum": "" }, "require": { @@ -3830,7 +3812,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.23" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.24" }, "funding": [ { @@ -3838,7 +3820,7 @@ "type": "github" } ], - "time": "2022-12-28T12:41:10+00:00" + "time": "2023-01-26T08:26:55+00:00" }, { "name": "phpunit/php-file-iterator", @@ -4550,16 +4532,16 @@ }, { "name": "sebastian/environment", - "version": "5.1.4", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { @@ -4601,7 +4583,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -4609,7 +4591,7 @@ "type": "github" } ], - "time": "2022-04-03T09:37:03+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", @@ -4923,16 +4905,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { @@ -4971,10 +4953,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -4982,7 +4964,7 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "sebastian/resource-operations", @@ -5041,16 +5023,16 @@ }, { "name": "sebastian/type", - "version": "3.2.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", - "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { @@ -5085,7 +5067,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -5093,7 +5075,7 @@ "type": "github" } ], - "time": "2022-09-12T14:47:03+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", @@ -5512,16 +5494,16 @@ }, { "name": "twig/twig", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "3ffcf4b7d890770466da3b2666f82ac054e7ec72" + "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/3ffcf4b7d890770466da3b2666f82ac054e7ec72", - "reference": "3ffcf4b7d890770466da3b2666f82ac054e7ec72", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a6e0510cc793912b451fd40ab983a1d28f611c15", + "reference": "a6e0510cc793912b451fd40ab983a1d28f611c15", "shasum": "" }, "require": { @@ -5572,7 +5554,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.5.0" + "source": "https://github.com/twigphp/Twig/tree/v3.5.1" }, "funding": [ { @@ -5584,7 +5566,7 @@ "type": "tidelift" } ], - "time": "2022-12-27T12:28:18+00:00" + "time": "2023-02-08T07:49:20+00:00" } ], "aliases": [], From 94b311f14ffdd3c4da1cd4ee3ccb2a25f785d22b Mon Sep 17 00:00:00 2001 From: fogelito Date: Tue, 14 Feb 2023 11:55:20 +0200 Subject: [PATCH 87/94] composer.json upgrades --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index c4ea03d4a2..d4d7dc83bb 100644 --- a/composer.json +++ b/composer.json @@ -45,11 +45,11 @@ "appwrite/php-runtimes": "0.11.*", "utopia-php/abuse": "0.17.*", "utopia-php/analytics": "0.2.*", - "utopia-php/audit": "0.19.*", + "utopia-php/audit": "0.20.*", "utopia-php/cache": "0.8.*", "utopia-php/cli": "0.13.*", "utopia-php/config": "0.2.*", - "utopia-php/database": "0.29.0", + "utopia-php/database": "0.30.*", "utopia-php/preloader": "0.2.*", "utopia-php/domains": "1.1.*", "utopia-php/framework": "0.26.*", From 161d3b485ecf55cb36dc29ddc3d6fd27b332b015 Mon Sep 17 00:00:00 2001 From: fogelito Date: Tue, 14 Feb 2023 11:58:52 +0200 Subject: [PATCH 88/94] composer.json upgrades --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index d4d7dc83bb..1711407ece 100644 --- a/composer.json +++ b/composer.json @@ -43,7 +43,7 @@ "ext-sockets": "*", "appwrite/php-clamav": "1.1.*", "appwrite/php-runtimes": "0.11.*", - "utopia-php/abuse": "0.17.*", + "utopia-php/abuse": "0.18.*", "utopia-php/analytics": "0.2.*", "utopia-php/audit": "0.20.*", "utopia-php/cache": "0.8.*", From 9b017140c7d0ea38b6ae7e32204a817a234112e2 Mon Sep 17 00:00:00 2001 From: fogelito Date: Tue, 14 Feb 2023 11:59:56 +0200 Subject: [PATCH 89/94] composer.lock --- composer.lock | 53 +++++++++++++++++++++++---------------------------- 1 file changed, 24 insertions(+), 29 deletions(-) diff --git a/composer.lock b/composer.lock index 73694e6b1e..3d108c1d6b 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": "d57d56abd42a4f39c750d044dec6d212", + "content-hash": "ac80cafdd8c2c6deaec3dfe628084655", "packages": [ { "name": "adhocore/jwt", @@ -1808,26 +1808,27 @@ }, { "name": "utopia-php/abuse", - "version": "0.17.0", + "version": "0.18.0", "source": { "type": "git", "url": "https://github.com/utopia-php/abuse.git", - "reference": "3dee975b501767d49a9cf71dbdc4707bf979a91b" + "reference": "8496401234f73a49f8c4259d3e89ab4a7c1f9ecf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/abuse/zipball/3dee975b501767d49a9cf71dbdc4707bf979a91b", - "reference": "3dee975b501767d49a9cf71dbdc4707bf979a91b", + "url": "https://api.github.com/repos/utopia-php/abuse/zipball/8496401234f73a49f8c4259d3e89ab4a7c1f9ecf", + "reference": "8496401234f73a49f8c4259d3e89ab4a7c1f9ecf", "shasum": "" }, "require": { "ext-curl": "*", "ext-pdo": "*", "php": ">=8.0", - "utopia-php/database": "0.29.*" + "utopia-php/database": "0.30.*" }, "require-dev": { "laravel/pint": "1.2.*", + "phpstan/phpstan": "1.9.x-dev", "phpunit/phpunit": "^9.4", "vimeo/psalm": "4.0.1" }, @@ -1841,12 +1842,6 @@ "license": [ "MIT" ], - "authors": [ - { - "name": "Eldad Fux", - "email": "eldad@appwrite.io" - } - ], "description": "A simple abuse library to manage application usage limits", "keywords": [ "Abuse", @@ -1857,9 +1852,9 @@ ], "support": { "issues": "https://github.com/utopia-php/abuse/issues", - "source": "https://github.com/utopia-php/abuse/tree/0.17.0" + "source": "https://github.com/utopia-php/abuse/tree/0.18.0" }, - "time": "2023-01-16T08:00:59+00:00" + "time": "2023-02-14T09:56:04+00:00" }, { "name": "utopia-php/analytics", @@ -1918,25 +1913,26 @@ }, { "name": "utopia-php/audit", - "version": "0.19.0", + "version": "0.20.0", "source": { "type": "git", "url": "https://github.com/utopia-php/audit.git", - "reference": "fc552228ce7690854066d9ecea104a4d076117ae" + "reference": "3fce3f4ad3ea9dfcb39b79668abd76331412a5ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/audit/zipball/fc552228ce7690854066d9ecea104a4d076117ae", - "reference": "fc552228ce7690854066d9ecea104a4d076117ae", + "url": "https://api.github.com/repos/utopia-php/audit/zipball/3fce3f4ad3ea9dfcb39b79668abd76331412a5ed", + "reference": "3fce3f4ad3ea9dfcb39b79668abd76331412a5ed", "shasum": "" }, "require": { "ext-pdo": "*", "php": ">=8.0", - "utopia-php/database": "0.29.*" + "utopia-php/database": "0.30.*" }, "require-dev": { "laravel/pint": "1.2.*", + "phpstan/phpstan": "^1.8", "phpunit/phpunit": "^9.3", "vimeo/psalm": "4.0.1" }, @@ -1960,9 +1956,9 @@ ], "support": { "issues": "https://github.com/utopia-php/audit/issues", - "source": "https://github.com/utopia-php/audit/tree/0.19.0" + "source": "https://github.com/utopia-php/audit/tree/0.20.0" }, - "time": "2023-01-16T08:00:46+00:00" + "time": "2023-02-14T09:46:54+00:00" }, { "name": "utopia-php/cache", @@ -2119,16 +2115,16 @@ }, { "name": "utopia-php/database", - "version": "0.29.0", + "version": "0.30.1", "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "d4449bca6a6ca620588df6575beff35c7e8dcadd" + "reference": "1cea72c1217357bf0747ae4f28ebef57e9dc0e65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/d4449bca6a6ca620588df6575beff35c7e8dcadd", - "reference": "d4449bca6a6ca620588df6575beff35c7e8dcadd", + "url": "https://api.github.com/repos/utopia-php/database/zipball/1cea72c1217357bf0747ae4f28ebef57e9dc0e65", + "reference": "1cea72c1217357bf0747ae4f28ebef57e9dc0e65", "shasum": "" }, "require": { @@ -2139,13 +2135,12 @@ }, "require-dev": { "ext-mongodb": "*", - "ext-pdo": "*", "ext-redis": "*", "fakerphp/faker": "^1.14", "mongodb/mongodb": "1.8.0", "phpunit/phpunit": "^9.4", "swoole/ide-helper": "4.8.0", - "utopia-php/cli": "^0.11.0", + "utopia-php/cli": "^0.14.0", "vimeo/psalm": "4.0.1" }, "type": "library", @@ -2168,9 +2163,9 @@ ], "support": { "issues": "https://github.com/utopia-php/database/issues", - "source": "https://github.com/utopia-php/database/tree/0.29.0" + "source": "https://github.com/utopia-php/database/tree/0.30.1" }, - "time": "2023-01-15T23:51:06+00:00" + "time": "2023-02-14T06:25:03+00:00" }, { "name": "utopia-php/domains", From 397d4937ea6935da14f8825e1c16b8a6f2a74588 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Tue, 14 Feb 2023 18:53:11 +0100 Subject: [PATCH 90/94] feat: bump console to 2.2.0 --- .gitmodules | 2 +- app/console | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index fd8c9312e2..fa914443fb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "app/console"] path = app/console url = https://github.com/appwrite/console - branch = 2.1.1 + branch = 2.2.0 diff --git a/app/console b/app/console index 5e2a40c1e3..2456d8f21c 160000 --- a/app/console +++ b/app/console @@ -1 +1 @@ -Subproject commit 5e2a40c1e397bd341a432698c9d76a3f96315841 +Subproject commit 2456d8f21c6e2554056d1a37eab3602024cbb739 From 92a20a224144b59951990f4df92d108114d5afea Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Tue, 14 Feb 2023 18:56:06 +0100 Subject: [PATCH 91/94] chore: add to changelog --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index b722bebf9d..6ab752f34e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,6 @@ # Version 1.2.1 ## Changes +- Upgrade Console to [2.2.0](https://github.com/appwrite/console/releases/tag/2.2.0) - Update DBIP Database [#5049](https://github.com/appwrite/appwrite/pull/5049) ## Bugs From b3e29c60861e957b4cb30e6252363a1c8b78f880 Mon Sep 17 00:00:00 2001 From: Jake Barnby Date: Wed, 15 Feb 2023 17:39:15 +1300 Subject: [PATCH 92/94] Fix audit --- app/workers/audits.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/workers/audits.php b/app/workers/audits.php index b86649543b..b25430ec41 100644 --- a/app/workers/audits.php +++ b/app/workers/audits.php @@ -40,6 +40,7 @@ class AuditsV1 extends Worker $dbForProject = $this->getProjectDB($project->getId()); $audit = new Audit($dbForProject); $audit->log( + userInternalId: $user->getInternalId(), userId: $user->getId(), // Pass first, most verbose event pattern event: $event, From fc87a0a281a20fd258b9b3bd049c9da7470c6ef9 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Wed, 15 Feb 2023 11:27:26 -0800 Subject: [PATCH 93/94] Bump actions to fix save-state warning --- .github/workflows/tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 51e14b17a5..fbf3d3b991 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -23,10 +23,10 @@ jobs: # This is a separate action that sets up buildx runner - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v2 - name: Build Appwrite - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v3 with: context: . push: false From 0b07fb2060d7c4773f28b3f34268f019c8b8f34b Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 21 Feb 2023 05:18:41 +0000 Subject: [PATCH 94/94] fix error --- tests/e2e/Services/Teams/TeamsBaseClient.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/e2e/Services/Teams/TeamsBaseClient.php b/tests/e2e/Services/Teams/TeamsBaseClient.php index 9ce8cb358f..7892491e08 100644 --- a/tests/e2e/Services/Teams/TeamsBaseClient.php +++ b/tests/e2e/Services/Teams/TeamsBaseClient.php @@ -272,7 +272,7 @@ trait TeamsBaseClient $this->assertNotEmpty($response['body']['teamId']); $this->assertNotEmpty($response['body']['teamName']); $this->assertCount(2, $response['body']['roles']); - $this->assertEquals(false, DateTime::isValid($response['body']['joined'])); // is null in DB + $this->assertEquals(false, (new DateTimeValidator())->isValid($response['body']['joined'])); // is null in DB $this->assertEquals(false, $response['body']['confirm']); $lastEmail = $this->getLastEmail();

    nbOqaw;mVP-%loYsQ}}xp6u4 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

=J6ve4EqWH9XK8vC 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%0D(X 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